0
這是獨家新聞。我使用正則表達式來查找圖像,並在其源代碼的開頭插入「../../」。不過它不工作,但是當我運行RegEx時,保存圖像文件名稱(包括擴展名)的變量正在改變。如果我註釋掉'preg_replace'這一行,這個變量就會正確回顯。誰能告訴我什麼是錯的?提前致謝!正則表達式意外改變變量值?
$imagefile = substr($filedata,($jpgbeginning+1),(($jpg+3)-$jpgbeginning));
$filedata = preg_replace('/(<img\s+.*?src=")(.*\\.(?:jpg|png|bmp|gif).*?>)/', '<img src="../'.$imagefile.'" />', $filedata);
echo $imagefile."<br /><br />";
此外,在正則表達式中,它將「../」部分加倍,所以實際上由於某種原因輸出爲../../。再次感謝!
你似乎已經majorly混淆'filedata' $和海誓山盟'$ imagefile',因爲你正在使用他們向前和向後所有的時間(例如,在你的例子中,'$ imagefile'沒有附加任何正則表達式,只是'substr',而'$ filedata'替代了它本身的正則表達式。 – h2ooooooo
你真的不應該使用這樣的正則表達式。使用DOM來提取src屬性,爲您提供裸露的URL。這將簡化一個操作級別。 –
Re:h2oo ... - $ imagefile只是爲了獲得圖像的全名,而$ filedata實際上應該是在自己做正則表達式。我正在用正則表達式更新$ filedata。 –