{"id":231053,"date":"2022-12-26T13:02:00","date_gmt":"2022-12-26T10:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231053"},"modified":"2022-12-26T13:04:29","modified_gmt":"2022-12-26T10:04:29","slug":"anvaenda-curl-foer-att-avgoera-om-den-angivna-webbadressen-aer-en-giltig-sida","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/anvaenda-curl-foer-att-avgoera-om-den-angivna-webbadressen-aer-en-giltig-sida\/","title":{"rendered":"Anv\u00e4nda cURL f\u00f6r att avg\u00f6ra om den angivna webbadressen \u00e4r en giltig sida"},"content":{"rendered":"<p>Tidigare denna m\u00e5nad skrev jag om att hitta <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/hitta-destinationen-foer-en-omdirigering-med-php\/\" title=\"destinationen f\u00f6r en omdirigering med hj\u00e4lp av cURL i PHP\">destinationen f\u00f6r en omdirigering med hj\u00e4lp av cURL i PHP<\/a>. Detta kan vara en anv\u00e4ndbar funktion att anv\u00e4nda n\u00e4r:<\/p>\n<ul>\n<li>du vet att webbadresserna som du har att g\u00f6ra med kommer att omdirigera,<\/li>\n<li>du vet att antalet omdirigeringar kommer att begr\u00e4nsas till en.<\/li>\n<\/ul>\n<p>Visst, i det senare fallet blir det sv\u00e5rare eftersom sajter som till exempel Twitter har flera omdirigeringar innan du kommer till destinationen.<\/p>\n<p>Men det \u00e4r ett \u00e4mne f\u00f6r ett annat inl\u00e4gg (s\u00e5vida du inte bara vill implementera ett rekursivt eller iterativt s\u00e4tt att arbeta igenom f\u00f6rfr\u00e5gningar tills du hittar slutdestinationen).<\/p>\n<p>Hur som helst, det finns en annan sak som ocks\u00e5 kan vara anv\u00e4ndbar n\u00e4r du arbetar med omdirigeringar och med cURL, och det \u00e4r att avg\u00f6ra om den angivna webbadressen tar dig till en giltig sida.<\/p>\n<h2>\u00c4r den angivna webbadressen en giltig sida?<\/h2>\n<p>Koden i det h\u00e4r inl\u00e4gget kommer inte att vara helt annorlunda \u00e4n vad du kanske har sett i tidigare inl\u00e4gg; Men de viktigaste sakerna som vi ska g\u00f6ra \u00e4r f\u00f6ljande:<\/p>\n<ul>\n<li>initiera cURL med webbadressen som vi har f\u00e5tt,<\/li>\n<li>st\u00e4ll in v\u00e4rdet CUROPT_RETURNTRANSFER till sant (vilket returnerar v\u00e4rdet f\u00f6r \u00f6verf\u00f6ringen som en str\u00e4ng),<\/li>\n<li>och utv\u00e4rdera sedan HTTP-statuskoden som returneras fr\u00e5n beg\u00e4ran.<\/li>\n<\/ul>\n<p>Du kan l\u00e4sa allt om koderna p\u00e5 den <a href=\"https:\/\/httpstatuses.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">h\u00e4r webbplatsen<\/a> men de tv\u00e5 vi \u00e4r mest bekymrade \u00f6ver, \u00e5tminstone f\u00f6r det h\u00e4r inl\u00e4gget, \u00e4r 404 och 200.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159997-61e70253043e6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159997-61e70253043e6.png\" alt=\"Anv\u00e4nda cURL f\u00f6r att avg\u00f6ra om den angivna webbadressen \u00e4r en giltig sida\"><\/a><\/p>\n<p>S\u00e5 f\u00f6rst, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ad96af9aa3007807686ac87b630dcd7\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koden:<\/a><\/p>\n<pre><code>&lt;?php\n\/**\n * Determines if a specific URL returns a valid page. This is experimental and it is based on\n * the status code.\n *\n * @param string $url the url to evaluate\n *\n * @return bool true if the URL returns a status code of 404; otherwise, false\n *\/\npublic function isValidUrl(string $url): bool\n{\n    $curl = curl_init($url);\n\n    curl_setopt($curl, CURLOPT_URL, $url);\n    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);\n\n    $response = curl_exec($curl);\n\n    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);\n    curl_close($curl);\n\n    return (404 !== $httpCode);\n}<\/code><\/pre>\n<p>Och s\u00e5 h\u00e4r fungerar det:<\/p>\n<ol>\n<li>funktionen accepterar en URL som ett argument,<\/li>\n<li>vi initierar cURL med r\u00e4tt inst\u00e4llningar, och sedan k\u00f6r vi beg\u00e4ran,<\/li>\n<li>vi l\u00e4ser v\u00e4rdet p\u00e5 statuskoden som \u00e4r lagrad fr\u00e5n svaret,<\/li>\n<li>vi st\u00e4nger cURL-handtaget och returnerar sedan utv\u00e4rderingen av statuskoden.<\/li>\n<\/ol>\n<p>Det verkar enkelt nog, eller hur?<\/p>\n<p>Och i allm\u00e4nhet \u00e4r det s\u00e5. Du kanske m\u00e5ste g\u00f6ra lite finjusteringar p\u00e5 egen hand f\u00f6r din statuskod, eller s\u00e5 kanske du vill analysera information fr\u00e5n svaret. Detta kan g\u00f6ras genom att analysera str\u00e4ngen, anv\u00e4nda regulj\u00e4ra uttryck eller mer. Men det ligger utanf\u00f6r ramen f\u00f6r detta inl\u00e4gg.<\/p>\n<p>Som ett minimum kommer detta att tala om f\u00f6r dig om webbadressen som du f\u00f6rs till \u00e4r en giltig sida eller inte.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Det finns en annan sak som \u00e4r anv\u00e4ndbar n\u00e4r du arbetar med omdirigeringar och med cURL: Att avg\u00f6ra om den angivna webbadressen tar dig till en giltig sida.<\/p>\n","protected":false},"author":1,"featured_media":236354,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,807,724,868],"tags":[1173],"class_list":["post-231053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=231053"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231053\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236354"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}