使用正则表达式删除标记之间的文本

时间:2011-04-06 09:05:04

标签: php regex

如何使用regexp

删除br标签之间的文本
<br />var j=; var g=; g+=G;j+=30006;g+=a;g+=u;g+=l;g+=t;<br />

“var”和“;”总是存在,但其他的单词和符号可能会有所不同,如下所示:

<br />var e=; var x=; x+=tos;x+=ах,;<br />

等...

这些行以随机顺序出现:

<br />Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br />var j=; var g=; g+=G;j+=30006;g+=a;g+=u;g+=l;g+=t;<br /> Donec condimentum neque quis magna consectetur ut aliquam quam dictum. Fusce sed elit purus, lobortis tincidunt libero.<br />Nunc ultrices augue non augue tristique in aliquet urna adipiscing.<br /><br />var ... ;<br />

谢谢!

4 个答案:

答案 0 :(得分:1)

你想要的正则表达式是

<br\s\/?>.*?var.*?;.*?<br\s\/?>

只需用<br /><br />替换输出。

答案 1 :(得分:0)

如果您想要的只是输出<br /><br />,则不需要正则表达式:

$result = "<br /><br />";

这只是一个常数!

答案 2 :(得分:0)

如果<br />元素的数量不同,您可以使用substr_count()来计算<br />个元素,然后分别输出相同的数量。

答案 3 :(得分:0)

如果您必须为整个文本和成对的<br/>执行此操作,您可以执行以下操作:

$str = 'test0 <br />var j=; var g=; g+=G;j+=30006;g+=a;g+=u;g+=l;g+=t;<br /> test1 <br /> test2';
$result = preg_replace('`<br */>.*?<br */>`s','<br/><br/>',$str);
var_dump($result);