如何使用RegEx替换php字符串中的所有html标记


How to replace all html tags in a php string using RegEx

如何使用RegEx 替换php字符串中的所有html标记

尝试如下但失败,

$r = "<h1>Hai</h1><br/><p>Hello world</p>";

$result = preg_replace('<(.*)>', '', $r);

echo $result ;

预期结果:

Hai Hello world仅为字符串格式

.* 后打一个问号

$r = "<h1>Hai</h1><br/><p>Hello world</p>";
$result = preg_replace('<(.*?)>', '', $r);
echo $result ;

.*是一个贪婪的正则表达式,将匹配所有,直到最后一个>字符。.*?是惰性的,并且将匹配到第一个>字符。

使用strip_tag而不是regex怎么样?http://php.net/manual/en/function.strip-tags.php

您的正则表达式失败,因为*是一个贪婪运算符,它会消耗包括>字符在内的所有字符。尝试以下操作:

$result = preg_replace('<(.*?)>', '', $r);

然而,正如@MateuszMrozewski所指出的,使用条形标记函数可能是解决这个问题的最佳方法。