使用php中的正则表达式匹配字符串中的前导和尾随空格

时间:2013-09-16 12:17:23

标签: php html regex

我有一个html字符串

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

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

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

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

任何人都可以帮我解决这个问题吗?

提前致谢,

Varun的

3 个答案:

答案 0 :(得分:1)

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

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

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

(编辑):我似乎误解了'尾随/领先'的感觉。

答案 1 :(得分:1)

尝试使用:

$html = preg_replace('~<b>\s*(.*?)\s*</b>\s*~i', '*\1*', $html);
标签和要保留的字符串之间的

\s将剥去要修剪的空格。 i标志仅用于区分大小写,我使用~作为分隔符,因此您不必转义正斜杠。

答案 2 :(得分:1)

  

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

这很容易就可以了。

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

请参阅demo