{"id":231974,"date":"2022-12-29T16:12:00","date_gmt":"2022-12-29T13:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231974"},"modified":"2022-12-29T16:16:42","modified_gmt":"2022-12-29T13:16:42","slug":"come-rimuovere-le-immagini-con-domdocument","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-rimuovere-le-immagini-con-domdocument\/","title":{"rendered":"Come rimuovere le immagini con DOMDocument"},"content":{"rendered":"<p>Ho scritto di DOMDocument in alcuni altri post (<a href=\"https:\/\/wordpress.mediadoma.com\/it\/come-manipolare-il-dom-usando-php\/\" title=\"1\">1<\/a>, <a href=\"https:\/\/wordpress.mediadoma.com\/it\/modifica-i-contenitori-di-immagini-sul-lato-server-in-wordpress\/\" title=\"2\">2<\/a>, <a href=\"https:\/\/wordpress.mediadoma.com\/it\/aggiunta-di-attributi-immagine-wordpress-personalizzati\/\" title=\"3\">3<\/a> per condividerne alcuni) ma continuo a trovarlo utile in diversi modi.<\/p>\n<p>Ricorda, DOMDocument \u00e8 una classe in PHP che ci consente di manipolare il documento HTML prima di visualizzarlo nel browser.<\/p>\n<p><a href=\"https:\/\/www.php.net\/manual\/en\/class.domdocument.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Dal manuale<\/a> :<\/p>\n<blockquote>\n<p>Rappresenta un intero documento HTML o XML; funge da radice dell&#8217;albero dei documenti.<\/p>\n<\/blockquote>\n<p>Ogni volta che penso di lavorare con la <code>saveHTML<\/code>funzione, penso di dover serializzare le nuove informazioni in un file o in un altro flusso di output prima di inviarlo al browser.<\/p>\n<p>Ma non dobbiamo farlo. Si pu\u00f2 fare a memoria.<\/p>\n<p>Caso in questione: in un progetto, ho bisogno di trovare tutti gli elementi dell&#8217;immagine in un documento. Se l&#8217;immagine non ha un URL di origine valido, \u00e8 necessario sostituire l&#8217;attributo di origine o rimuoverlo.<\/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=\"Come rimuovere le immagini con DOMDocument\"><\/a><\/p>\n<p>Ai fini di questo esempio, si supponga quanto segue<\/p>\n<ul>\n<li><code>isValidImage<\/code>\u00e8 una funzione responsabile del controllo per vedere se l&#8217;attributo di origine specificato si risolve in un URL valido,<\/li>\n<li>Che sto impostando l&#8217; <code>src<\/code>attributo su una stringa vuota anzich\u00e9 su un&#8217;immagine segnaposto per mantenere il codice semplice,<\/li>\n<li>E restituisco il risultato a tutto ci\u00f2 che verr\u00e0 visualizzato nel modello o nel parziale.<\/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\">Ho commentato il codice<\/a>, quindi dovrebbe essere abbastanza facile da seguire per questo esempio:<\/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>Si noti che ci sono diversi modi in cui il codice sopra pu\u00f2 essere migliorato (come restituire in anticipo se non vengono trovate immagini), ma lo scopo \u00e8 mostrare come sostituire l&#8217; <code>src<\/code>attributo se l&#8217;URL non viene risolto correttamente. Pertanto, rimuovendo le immagini con DOMDocument.<\/p>\n<p>Se sei interessato a come determinare se un URL \u00e8 valido, <a href=\"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-di-curl-per-determinare-se-lurl-specificato-e-una-pagina-valida\/\" title=\"questo articolo\">questo articolo<\/a> potrebbe essere utile.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lo scopo \u00e8 mostrare come sostituire l&#8217;attributo src se l&#8217;URL non viene risolto correttamente. Quindi, come rimuovere le immagini con DOMDocument.<\/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":[896,835,751,804,720,844,865],"tags":[1168],"class_list":["post-231974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-open-source-projektmanagement-3","category-php-6","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231974"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236999"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}