Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除某些字符外的PHP strip_标记_Php_Html - Fatal编程技术网

除某些字符外的PHP strip_标记

除某些字符外的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

我在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 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

'>标记。所以你的目标不是保留这些标签,而是添加它们?我建议您删除所有标记,然后使用phps
nl2br()
函数将换行符(仍然存在)替换为

标记。提示,我是懒惰的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