在php中将换行替换为2个跨度


replace line break with 2 spans in php

考虑以下HTML字符串:

<p>This is line 1 <br /> and this is line 2</p>

如何使用PHP/Regex 将以上内容替换为以下字符串

<p><span class="single-line">This is line 1</span><span class="single-line">and this is line 2</span></p>

这很有效,但我建议您不要依赖正则表达式进行HTML解析/转换:

$string = '<p>This is line 1 <br /> and this is line 2</p>';
$pattern = '~([^<>]+)<br[[:blank:]]*/?>([^<>]+)~i';
$replacement = '<span class="single-line">$1</span><span class="single-line">$2</span>';
echo preg_replace($pattern, $replacement, $string);

我并不建议你真的这么做(因为IMHO你滥用了标记和类),但实际上很简单:

你更换

<p>

带有

<p><span class="single-line">

<br />

带有

</span><span class="single-line">

最后是

</p>

带有

</span></p>

可以替换字符串的PHP函数是strtrDocs

请注意,这只适用于您在问题中给出的HTML片段。如果您需要更精确的数据,您应该考虑使用DOMDocumentDOMXPath,正如我在上面所评论的那样。