考虑以下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函数是strtr
Docs。
请注意,这只适用于您在问题中给出的HTML片段。如果您需要更精确的数据,您应该考虑使用DOMDocument
和DOMXPath
,正如我在上面所评论的那样。