{"id":231222,"date":"2022-12-29T16:14:00","date_gmt":"2022-12-29T13:14:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231222"},"modified":"2022-12-29T16:16:50","modified_gmt":"2022-12-29T13:16:50","slug":"kuidas-eemaldada-pilte-domdocumentiga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kuidas-eemaldada-pilte-domdocumentiga\/","title":{"rendered":"Kuidas eemaldada pilte DOMDocumentiga"},"content":{"rendered":"<p>Olen kirjutanud DOMDocumentist m\u00f5nes teises postituses (<a href=\"https:\/\/wordpress.mediadoma.com\/et\/kuidas-manipuleerida-dom-iga-php-abil\/\" title=\"1\">1<\/a>, <a href=\"https:\/\/wordpress.mediadoma.com\/et\/muutke-wordpressis-serveripoolseid-pildikonteinereid\/\" title=\"2\">2<\/a>, <a href=\"https:\/\/wordpress.mediadoma.com\/et\/kohandatud-wordpressi-pildiatribuutide-lisamine\/\" title=\"3\">3<\/a>, et jagada m\u00f5nda), kuid leian, et see on j\u00e4tkuvalt mitmel viisil kasulik.<\/p>\n<p>Pidage meeles, et DOMDocument on PHP klass, mis v\u00f5imaldab meil HTML-dokumendiga manipuleerida enne selle brauseris renderdamist.<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kasutusjuhendist<\/a> :<\/p>\n<blockquote>\n<p>Esindab tervet HTML- v\u00f5i XML-dokumenti; toimib dokumendipuu juurena.<\/p>\n<\/blockquote>\n<p>Alati, kui m\u00f5tlen funktsiooniga t\u00f6\u00f6tamisele <code>saveHTML<\/code>, m\u00f5tlen sellele, et enne brauserisse saatmist tuleb uus teave failiks v\u00f5i muuks v\u00e4ljundvoogu j\u00e4rjestada.<\/p>\n<p>Aga me ei pea seda tegema. Seda saab teha m\u00e4lus.<\/p>\n<p>N\u00e4ide: projektis pean leidma dokumendist k\u00f5ik pildielemendid. Kui pildil ei ole kehtivat allika URL-i, pean l\u00e4hteatribuudi asendama v\u00f5i eemaldama.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159632-61e6f91ebff9c.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-159632-61e6f91ebff9c.png\" alt=\"Kuidas eemaldada pilte DOMDocumentiga\"><\/a><\/p>\n<p>Selle n\u00e4ite puhul eeldage j\u00e4rgmist<\/p>\n<ul>\n<li><code>isValidImage<\/code>on funktsioon, mis vastutab selle kontrollimise eest, kas m\u00e4\u00e4ratud l\u00e4hteatribuut loob kehtiva URL-i,<\/li>\n<li>et m\u00e4\u00e4ran <code>src<\/code>atribuudiks t\u00fchja stringi, mitte kohat\u00e4ite kujutise, et kood oleks lihtne,<\/li>\n<li>Ja ma tagastan tulemuse sellele, mis mallis v\u00f5i osalises renderdatakse.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/35581dce7a46c4a78f5168d0291aa961#file-00-replace-image-src-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kommenteerisin koodi<\/a>, nii et selle n\u00e4ite puhul peaks seda olema piisavalt lihtne j\u00e4rgida:<\/p>\n<pre><code>&lt;?php\n\n\/\/ Instantiate a DOMDocument object and load the incoming $description HTML.\n$domDocument = new DOMDocument();\n$domContent = $domDocument-&gt;loadHTML(mb_convert_encoding($description, 'HTML-ENTITIES'));\n\n\/\/ Find all of the images in the HTML.\n$images = $domDocument-&gt;getElementsByTagName('img');\n\n\/\/ If there are images, then iterate through each of them.\nif (0 !== count($images)) {\n    $urlPrefix = $this-&gt;getUrlPrefix(); \/\/ A helper function for getting the URL prefix.\n    foreach ($images as $image) {\n        $image-&gt;setAttribute(\n            'src',\n            $urlPrefix.$image-&gt;getAttribute('src')\n        );\n\n        \/\/ If the image's source results in a 404 status code, set the `src` to an empty string.\n        if (!$this-&gt;isValidImage($image-&gt;getAttribute('src'))) {\n            $image-&gt;setAttribute('src', '');\n        }\n    }\n}\n\n\/\/ Save the changed document and send it to the front-end.\nreturn $domDocument-&gt;saveHTML();<\/code><\/pre>\n<p>Pange t\u00e4hele, et \u00fclaltoodud koodi saab t\u00e4iustada mitmel viisil (nt varakult naasmine, kui pilte ei leita), kuid eesm\u00e4rk on n\u00e4idata, kuidas <code>src<\/code>atribuuti asendada, kui URL ei lahene \u00f5igesti. Seega piltide eemaldamine DOMDocumentiga.<\/p>\n<p>Kui olete huvitatud sellest, kuidas teha kindlaks, kas URL on kehtiv, v\u00f5ib <a href=\"https:\/\/wordpress.mediadoma.com\/et\/curl-i-kasutamine-et-teha-kindlaks-kas-maeaeratud-url-on-kehtiv-leht\/\" title=\"see artikkel\">see artikkel<\/a> abiks olla.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eesm\u00e4rk on n\u00e4idata, kuidas asendada atribuut src, kui URL ei lahene \u00f5igesti. Seega, kuidas eemaldada pilte DOMDocumentiga.<\/p>\n","protected":false},"author":1,"featured_media":236999,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,833,894,842,802,863],"tags":[1165],"class_list":["post-231222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-juhend-algajatele","category-kood","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231222"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236999"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}