php - 如何替换 HTML 内容中的所有新行但在 textarea 中保留新行?
问题描述
我有一个存储所有缓冲输出的 PHP 系统,在转储它之前,我删除了空白中的所有新行和空格。这行得通。
$content = Buffer::getKill();
$content = preg_replace(
[
'/[\n\r]|/',
'# {2,}#',
'#> <#'
],
[
'',
' ',
'><'
],
$content
);
我试图改变的 reponsavel 模式如下'/[\n\r]|/'
,但我没有成功。
问题是当我在内容中有一个 textarea 时,新的 textarea 行也会丢失。我尝试以多种方式执行正则表达式,但我无法获得结果,因为我对正则表达式感到意外。
下面是一个示例代码及其输出。
<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>
解决方案
这是一个查找 a 的正则表达式>
,后跟换行符(\n
或\r\n
),后跟任意数量的空格和 a <
:
$html = preg_replace('#>[\n\r\n]?\s+<#', '><', $html);
哪个输出:
<html><body><div><textarea>
The
Content
Here
</textarea></div></body></html>
这不是完美的,但更接近。
推荐阅读
- python - `np.arange` 在 stop=None 时出现异常但给出意外结果?
- aws-glue - Terratest 如何触发和等待胶水作业
- javascript - 如何在 Mongoose 中等待 model.save()
- c# - ImmutableDictionary 枚举顺序
- angular - 实现相关的生命周期钩子
- django - django视图没有重定向
- qt - 如何在 QML 中找到递归重新排列的来源
- crc - 这是哪种 CRC 算法(由 BBC 微型磁带归档系统使用)?
- c++ - 什么是结膜炎?
- android - Xamarin Forms Maps MoveToLastRegionOnLayoutChange 未按预期工作