0

我有一个 html 字符串

$html = <p>I'm a para</p><b>  I'm bold  </b>

现在我可以使用 php regex 将粗体标签替换为 wiki 标记(*):

$html = preg_replace('/<b>(.*?)<\/b>/', '*\1*', $html); 

除此之外,我还希望在同一 phppreg_replace函数中删除粗体标记中的前导和尾随空格。

谁能帮助我如何做到这一点?

提前致谢,

瓦伦

4

3 回答 3

1

除此之外,我还希望删除粗体标记中的前导和尾随空格

很简单,这会做得很好。

$html = preg_replace('/<b>\s+(.*?)\s+<\/b>/', '*\1*', $html);

查看演示

于 2013-09-16T12:29:06.817 回答
1

Try using:

$html = preg_replace('~<b>\s*(.*?)\s*</b>\s*~i', '*\1*', $html);

\s in between the tags and the string to keep will strip away the spaces to trim. The i flag just for case insensitivity and I used ~ as delimiters so you don't have to escape forward slashes.

于 2013-09-16T12:26:52.440 回答
1

为此使用\s符号(\s*表示可能出现 0 次或更多次):

$html = preg_replace('/\<b\>\s*(.*?)\s*\<\/b\>/i', '*\1*', $html);

-我还建议使用i修饰符,因为 html 标签不区分大小写。最后,为了更安全,符号<>应该被转义(它们是一些正则表达式的一部分。你的正则表达式可以在不转义它们的情况下工作,但是转义它们是一个好习惯,所以一定要避免错误)

(编辑):似乎我误解了“尾随/领先”的意思。

于 2013-09-16T12:19:24.100 回答