1

考虑以下 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>
4

2 回答 2

1

我并不是真的建议你真的这样做(因为恕我直言,你在滥用标记和类),但它实际上很简单:

你替换

<p>

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

<br />

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

最后

</p>

</span></p>

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

请注意,这仅适用于您在问题中给出的 HTML 片段。如果您需要更精确,您应该考虑使用DOMDocumentand ,DOMXPath正如我在上面已经评论过的那样。

于 2012-04-04T08:29:03.037 回答
1

这可行,但我建议您不要依赖正则表达式进行 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);
于 2012-04-04T08:33:46.163 回答