第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Preg_replace 不會(huì)刪除每個(gè)帶有 src 地址的 img 標(biāo)簽

Preg_replace 不會(huì)刪除每個(gè)帶有 src 地址的 img 標(biāo)簽

PHP
MMMHUHU 2022-12-30 16:13:43
我正在使用我的 PHP 來搜索來自特定地址的圖像,因此我想刪除所有這些 img 標(biāo)簽。我有這樣顯示的 img 標(biāo)簽:<img src="http://example.com/someimage1.jpeg"><img src="http://example.com/someimage2.jpeg"><img src="http://example.com/someimage3.jpeg"><img src="http://example.com/someimage4.jpeg"><img style="OVERFLOW: hidden; WIDTH: 0px; MAX-HEIGHT: 0px" alt="" src="http://test.mydomain.com/project433q325/track/Images/signature.gif?id=446&amp;etc=1586624376">當(dāng)我嘗試這個(gè)時(shí):foreach ($src as $image) {    $image = preg_replace("\<img src\=\"(.+)\"(.+)\/\>/i", '', $src);}它不會(huì)刪除 img 標(biāo)簽,所以我也試過這個(gè):foreach ($src as $image) {    $image = preg_replace("/<img[^>]+\>/i", "", $src); }我仍然有同樣的問題,因?yàn)樗粫?huì)刪除 img 標(biāo)簽。這是完整的代碼:if (strpos($inbox_message, 'http://test.mydomain.com/project433q325/track/Images/signature.gif?') !== false) {    $doc = new DOMDocument();    $doc->loadHTML($inbox_message);    $xpath = new DOMXpath($doc);    $src = $xpath->evaluate("string(//img/@src)");    if ($src) {        foreach ($src as $image) {            //image->nodeValue = preg_replace('<img.*?src='.$src.'.*?/>!i', '', $src);            //$src = preg_replace("/<img[^>]+\>/i", "", $src);            $image = preg_replace("\<img src\=\"(.+)\"(.+)\/\>/i", '', $src);        //}    }    $inbox_message = $doc->saveHTML();} 我想做的是我只想搜索具有顯示“ http://test.mydomain.com/project433q325/track/Images/signature.gif?”的 src 地址的 img 標(biāo)簽。并刪除它們。您能否舉例說明如何搜索具有特定 src 地址的每個(gè) img 標(biāo)簽,以便我可以使用 preg_replace 刪除每個(gè) img 標(biāo)簽?謝謝你。
查看完整描述

2 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

你不應(yīng)該為此使用正則表達(dá)式。您可以strpos像以前一樣使用您的,但將其移動(dòng)到 DOM 解析中并比較每個(gè)img. 然后您可以使用removeChild()刪除相應(yīng)的圖像。(這是來自如何使用 DOMDocument 刪除元素的改編答案?)


<?php

$inbox_message = '<p> Keep This</p><img src="http://example.com/someimage1.jpeg"><img src="http://example.com/someimage2.jpeg"><img src="http://example.com/someimage3.jpeg"><img src="http://example.com/someimage4.jpeg"><h1>Fake element</h1><img style="OVERFLOW: hidden; WIDTH: 0px; MAX-HEIGHT: 0px" alt="" src="http://test.mydomain.com/project433q325/track/Images/signature.gif?id=446&amp;etc=1586624376">';

$doc = new DOMDocument();

$doc->loadHTML($inbox_message);

$imgs = $doc->getElementsByTagName('img');

for($i = $imgs->length; --$i >= 0;){

    $node = $imgs->item($i);

    if (strpos($node->getAttribute('src'), 'http://test.mydomain.com/project433q325/track/Images/signature.gif?') !== false) {

        $node->parentNode->removeChild($node);

    }

}

echo $doc->savehtml();

https://3v4l.org/qinLR


您也可以使用strtolowerif $node->getAttribute('src')might contain varying case。在這種情況下,針strpos也應(yīng)該小寫。


對(duì)于正則表達(dá)式問題...


preg_replace("\<img src\=\"(.+)\"(.+)\/\>/i", '', $src);

正則表達(dá)式的開頭試圖使用不是有效定界符的反斜杠。A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.起始定界符必須與結(jié)束定界符匹配。此外,您$src只包含屬性的值,因此<img src...永遠(yuǎn)不會(huì)匹配。


如果您要實(shí)現(xiàn)該功能,則.+需要將其替換為您要檢查的 URI。


但是正則表達(dá)式在這里確實(shí)是錯(cuò)誤的方法。像以前一樣,為這些類型的工作使用解析器。正則表達(dá)式不應(yīng)用于結(jié)構(gòu)化數(shù)據(jù)。如果它是結(jié)構(gòu)化的,則可能已經(jīng)為它編寫了函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-12-30
?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

要?jiǎng)h除所有img標(biāo)簽,請(qǐng)使用以下正則表達(dá)式模式:

<img\s+[^>]+>

https://regex101.com/r/HfStzZ/1


要包含您在問題中描述的特定src網(wǎng)址,請(qǐng)使用以下正則表達(dá)式模式:

<img\s+[^>]*\bsrc="[^"]*\/signature\.gif[^\>]*\>

https://regex101.com/r/HfStzZ/2


在 PHP 中,使用preg_replace如下命令:

$output = preg_replace('/<img\s+[^>]*\bsrc="[^"]*\/signature\.gif[^\>]*\>/', '', $input);



查看完整回答
反對(duì) 回復(fù) 2022-12-30
  • 2 回答
  • 0 關(guān)注
  • 140 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)