考虑以下 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>
我并不是真的建议你真的这样做(因为恕我直言,你在滥用标记和类),但它实际上很简单:
你替换
<p>
和
<p><span class="single-line">
和
<br />
和
</span><span class="single-line">
最后
</p>
和
</span></p>
一个可以替换字符串的 PHP 函数是strtr
Docs。
请注意,这仅适用于您在问题中给出的 HTML 片段。如果您需要更精确,您应该考虑使用DOMDocument
and ,DOMXPath
正如我在上面已经评论过的那样。
这可行,但我建议您不要依赖正则表达式进行 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);