在php中用2个跨度替换换行符

时间:2012-04-04 08:21:15

标签: php html regex

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

2 个答案:

答案 0 :(得分:1)

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

你替换

<p>

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

<br />

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

最后

</p>

</span></p>

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

请注意,这仅适用于您在问题中提供的HTML片段。如果您需要更精确,请考虑使用DOMDocumentDOMXPath,如上所述。

答案 1 :(得分: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);