我有一个PHP系统,该系统存储所有缓冲的输出,在转储之前,我删除了空格中的所有新行和空格。正确。
$content = Buffer::getKill();
$content = preg_replace(
[
'/[\n\r]|/',
'# {2,}#',
'#> <#'
],
[
'',
' ',
'><'
],
$content
);
我尝试更改的响应模式是以下'/[\n\r]|/'
,但我没有成功。
问题是,当我在内容中包含文本区域时,新的文本区域行也会丢失。我已经尝试过几种方式来执行正则表达式,但是我无法获得结果,因为我对正则表达式感到意外。
下面是示例代码及其输出。
<html>
<body>
<div>
<textarea>
The
Content
Here
</textarea>
</div>
</body>
</html>
输出
<html><body><div><textarea>TheContentHere</textarea></div></body></html>
预期
<html><body><div><textarea>
The
Content
Here
</textarea></div></body></html>
答案 0 :(得分:1)
这里是一个正则表达式,它查找>
,后跟换行符(\n
或\r\n
),后跟任意数量的空格和<
:< / p>
$html = preg_replace('#>[\n\r\n]?\s+<#', '><', $html);
哪个输出:
<html><body><div><textarea>
The
Content
Here
</textarea></div></body></html>
这还算完美,但是更接近。
答案 1 :(得分:0)
(?!<textarea[^>]*?>)(\n)(?![^<]*?<\/textarea>)
这将匹配文本区域标签之间的所有换行符。