PHP使用preg_replace删除img标记

时间:2014-01-21 12:18:07

标签: php regex preg-replace

我可以在</a></div><div class="toolz">之间的标签中获取文字。结果是我之后有img标签<br />

例如:

<img alt="TEXT" title="TEXT"src="IMAGE LINK" /><br />

如何使用preg_replace从中删除?

<meta charset='UTF-8' />
<?php
    $handle='http://www.namefa.ir/Names.asp?pn=4&sx=M&fc=%D8%A2';
    preg_match_all('/<\/a><\/div>(.*?)\s*<div[^>]+class="toolz"[^>]*>\s*/si', file_get_contents($handle), $matching_data);
    $default = preg_replace('/<img[^>]*>(.*)\/><br />/is', "", $matching_data);
    echo'<pre>';print_r($default);echo'</pre>';
?>

1 个答案:

答案 0 :(得分:1)

我认为,您的代码存在一些逻辑错误。您必须使用循环来迭代搜索结果并替换原始内容中的标记。你现在做什么,似乎有点无用。

$handle='http://www.namefa.ir/Names.asp?pn=4&sx=M&fc=%D8%A2';
$content = file_get_contents($handle);
preg_match_all('/<\/a><\/div>(.*?)\s*<div[^>]+class="toolz"[^>]*>\s*/si', $content, $matching_data, PREG_SET_ORDER);
foreach ($matching_data as $match) {
    $replace = preg_replace('/<img[^>]*>(.*)\/><br />/is', "", $match[0]);
    $content = str_replace($matching_data[0], $replace, $content);
}
echo'<pre>';print_r($content);echo'</pre>';

似乎你的内部正则表达式替换图像是错误的..至少它找不到东西 - 你确定,<br />是正确的,或者你只是想找到一个简单的换行符< / p>