我有问题从文本中删除特定的url
,但是在锚标记之间保留text或html标记。但我不能删除它。我从文本中删除了特定的URL但是,无法获取锚标记之间的文本或html。这是我从文本中删除特定网址的代码。
preg_replace(|<a [^>]*href="http://www.microsoft.com[^"]*"[^>]*>.*</a>|iU, '', $a)
以下是样本
<a href="http://www.microsoft.com/"> <img src="http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250" class="mscom-image feature-image" alt="Learn about Lumia 950 and Lumia 950 XL." width="540" height="304"> </a>
我想获取img标签或具有特定网址的锚标签之间的任何文本。
我的代码中是否有任何错误。请指正。我想在php中使用正则表达式中的这个请帮助我。
答案 0 :(得分:1)
我们再来一次...... Don't use regexes to parse html,使用html解析器,例如DOMDocument:
$html = <<< EOF
<a href="http://www.microsoft.com/"> <img src="http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250" class="mscom-image feature-image" alt="Learn about Lumia 950 and Lumia 950 XL." width="540" height="304"> SOME TEXT </a>
EOF;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach($xpath->query("//a[contains(@href,'microsoft.com')]") as $element ){
$img = $xpath->query('./img',$element)->item(0);
echo $img->getAttribute('src'); // img source
echo $img->getAttribute('alt'); // img alt text
echo $element->textContent; //text inside the a tag
}
//http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250
//Learn about Lumia 950 and Lumia 950 XL.
//SOME TEXT