我想用正则表达式来替换src html属性. HTML没有格式错误,幸运的是在数据库的所有页面中采用相同的形式 – 即
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLx8CX69CX55Cevw1LcpDc0RHaiojIsJye.png)
如果页面中只有一个图像,我的代码可以正常工作.我想知道替换多个图像的最佳方法,因为这个将用相同的字符串替换所有图像标记.
$result = $s->db_query("SELECT reviewFullText as f FROM reviews WHERE reviewsID = 155");
while($row = mysql_fetch_array($result))
{
$body = stripslashes(html_entity_decode($row['f'], ENT_NOQUOTES, "UTF-8"));
preg_match_all('/]{1}/i', $body, $matches);
for($i=0;$i
{
$number = preg_replace("/[^0-9]/", '', $matches[0][$i]);
echo preg_replace('/]{1}/i', '
}
}
因此,如果页面包含两个文件,一个名为1.png,另一个名为2.png,则脚本应该解析这些数字并用不同的URL替换它们,例如http://xy/a/1.png和http:// XY /一个/ 2.png.
我听说preg_replace_callback是最好的方法,但我不知道如何让这个工作……帮助!
解决方法:
# Untested code:
$xml = new SimpleXml($xmlString);
foreach ($xml->xpath('//img') as $imgNode) {
$imgNode->addAttribute('src', "http://x.y/a/" . $imgNode->getAttribute('src'));
}
echo $xml->asXML();
请注意,如果你的html不是xhtml(即有效的xml),你需要像DOMDocument::loadHtml()这样的东西,但是这个想法保持不变.
标签:php,regex
来源: https://codeday.me/bug/20190927/1824744.html