我有一个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的
答案 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