【发布时间】:2021-05-05 10:20:39
【问题描述】:
早上好,我有一个字符串,其中有表示为<p>----</p> 的中断。破折号的数量通常不同。有时有 4 个,有时有 5 个,等等。
类似这样的:
Lorem ipsum
<p>------</p>
Lorem Ipsum
<p>----------------</p>
Lorem Ipsum
<p>--------------</p>
我想写一个 php preg_replace 命令来使它们都统一和相同。
这是我开发的,但它不起作用。哪里出错了?
$search = "/(<p>-)(.*?)(-<\/p>)/";
$replace = "<p>-------------</p>";
$item = preg_replace($search,$replace,$item);
此外,还有比 (.*?) 更精确的方法来仅匹配空格和破折号。
编辑 1: 感谢回答部分的团队,我更正了这样的功能:
$search = "/(<p>-)[\h-]+(<\/p>)/";
$replace = "<p>-------------</p>";
$item = preg_replace($search,$replace,$item);
只要文本在最后一个破折号和</p> 之间没有中断,就可以正常工作。如何识别虚线、空格并捕获\n?
示例:
<p>----- \n</p>
【问题讨论】:
-
您只能将空格和破折号与
[\h-]+匹配 -
注意:当你写一个问题时,确保你发布一个符合描述的例子。你说你的代码不起作用,但它在问题的例子中工作得很好:3v4l.org/6mLIA
标签: php preg-replace