简体   繁体   English

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

[英]Remove text between tags using a regular expression

How to remove text between br tags , using regexp 如何使用正则表达式删除br标签之间的文本

<br />var j=; var g=; g+=G;j+=30006;g+=a;g+=u;g+=l;g+=t;<br />

"var" and ";" “ var”和“;” is always exist, but other words and symbols may vary, something like this: 始终存在,但其他单词和符号可能会有所不同,如下所示:

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

etc... 等等...

these lines appear in random order: 这些行以随机顺序出现:

<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 />

thanks! 谢谢!

The regexp you want would be 您想要的正则表达式将是

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

and just replace the output by <br /><br /> . 并将输出替换为<br /><br />

If all you want is the output <br /><br /> , you don't need regular expressions: 如果只需要输出<br /><br /> ,则不需要正则表达式:

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

It's just a constant! 这只是一个常数!

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

If you have to do it for a whole text and by pairs of <br/> you can do something like that : 如果您需要对整个文本并按<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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM