使用preg_replace函数时出错

时间:2014-03-17 08:41:42

标签: php html

我想只替换

<span class="google-src-text" style="direction: ltr; text-align: left">any character</span>

与此源http://persianfox.ir/html.html中的空格一行一行,我的php代码是

$content = file_get_contents('path/to/html.html');
$content = str_replace('>', ">\n", $content);

echo preg_replace('/<span class="google-src-text" style="direction: ltr; text-align: left">.*.<\/span>/', ' ', $content);

但此代码将替换所有与<span class="google-src-text" style="direction: ltr; text-align: left"></span>对齐的内容。

2 个答案:

答案 0 :(得分:1)

如果你的&#34;任何角色都没有HTML,那么这个就可以了。

/<span class="google-src-text" style="direction: ltr; text-align: left">([^<]{1,})<\/span>/

答案 1 :(得分:1)

*默认为贪婪,您需要将其更改为 lazy ,如下所示:

preg_replace('/<span class="google-src-text" style="direction: ltr; text-align: left">.*?<\/span>/', ' ', $content);
//                                                               Note the question mark ^

这将匹配*到第一个</span>,请注意,如果你有一个嵌套的跨度,它将不会一直到最后。

这就是 You shouldn't parse HTML with Regex 的原因,而应使用 proper HTML DOM parser