除某些字符外的PHP strip_标记
我在PHP中使用除某些字符外的PHP strip_标记,php,html,Php,Html,我在PHP中使用strip_标记在回显数据时删除HTML标记 我的字符串看起来像: <br> <br> <br> <br> <br> Test 1, Test2<br> Test 3,<br> <br> <br> <br> <br> <br> Test 4<br> Test 5<br> <br> Test 6 test
strip_标记
在回显数据时删除HTML标记
我的字符串看起来像:
<br>
<br>
<br>
<br>
<br>
Test 1, Test2<br>
Test 3,<br>
<br>
<br>
<br>
<br>
<br>
Test 4<br>
Test 5<br>
<br>
Test 6 test 7
测试1、测试2
测试3,
测试4
测试5
测试6测试7
如何删除留下较大间隙的
标记,但将
标记保留在行间隙之间(如测试1、测试2
测试3
之间的间隙)
只需移除:
<br>
<br>
<br>
<br>
<br>
因此,字符串将最终看起来像:
Test 1, Test2<br>
Test 3,<br>
Test 4<br>
Test 5<br>
<br>
Test 6 test 7
test1,Test2
测试3,
测试4
测试5
测试6测试7
分两步进行可能更干净:
// remove <br> tags
$text = preg_replace('#^(<br[\\s]*(>|\/>)\s*){2,}$#im', '', $text);
// remove empty lines - from http://stackoverflow.com/a/709684/
$text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", PHP_EOL, $text);
预期结果是什么?因此,如果您试图用一个
替换n
'>标记。所以你的目标不是保留这些标签,而是添加它们?我建议您删除所有标记,然后使用phpsnl2br()
函数将换行符(仍然存在)替换为
标记。提示,我是懒惰的atm:foreach($DOMXPath->query('//br/previous sibling::br')为$br){$br->parentNode->removeChild($br);}
。检查我更新的问题
Test 1, Test2<br>
Test 3,<br>Test 4<br>
Test 5<br>
<br>
Test 6 test 7