在php中使用正则表达式匹配的字符串中去除前导和尾随空格
我有一个html字符串在php中使用正则表达式匹配的字符串中去除前导和尾随空格,php,html,regex,Php,Html,Regex,我有一个html字符串 $html = <p>I'm a para</p><b> I'm bold </b> $html=我是para我是粗体的 现在,我可以使用php正则表达式将粗体标记替换为wiki标记(*),如下所示: $html = preg_replace('/<b>(.*?)<\/b>/', '*\1*', $html); $html=preg_replace(“/(.*?/”,“*\1*”,$htm
$html = <p>I'm a para</p><b> I'm bold </b>
$html=我是para我是粗体的
现在,我可以使用php正则表达式将粗体标记替换为wiki标记(*),如下所示:
$html = preg_replace('/<b>(.*?)<\/b>/', '*\1*', $html);
$html=preg_replace(“/(.*?/”,“*\1*”,$html);
除此之外,我还希望在同一php的preg_replace
函数中删除粗体标记中的前导和尾随空格
有人能帮我做这件事吗
提前感谢,
Varun使用
\s
符号(\s*
表示可能出现0次或更多次):
$html=preg\u replace('/\\s*(.*?\s*\/i','*\1*',$html);
-我还建议使用I
修饰符,因为html标记不区分大小写。最后,为了更安全,符号
应该转义(它们是某些正则表达式构造的一部分。您的正则表达式可以在不转义的情况下工作,但转义它们是一个好习惯,因此一定要避免出现错误)
(编辑):似乎我误解了“尾随/前导”的含义。使用
\s
符号(\s*
表示可能出现0次或更多次):
$html=preg\u replace('/\\s*(.*?\s*\/i','*\1*',$html);
-我还建议使用I
修饰符,因为html标记不区分大小写。最后,为了更安全,符号
应该转义(它们是某些正则表达式构造的一部分。您的正则表达式可以在不转义的情况下工作,但转义它们是一个好习惯,因此一定要避免出现错误)
(编辑):似乎我误解了“尾随/前导”的含义。尝试使用:
$html = preg_replace('~<b>\s*(.*?)\s*</b>\s*~i', '*\1*', $html);
$html=preg\u replace('~\s*(.*?\s*\s*~i','*\1*',$html);
\s
在标记和要保留的字符串之间,将去除要修剪的空间。i
标志仅用于区分大小写,我使用了~
作为分隔符,因此您不必转义前斜杠。尝试使用:
$html = preg_replace('~<b>\s*(.*?)\s*</b>\s*~i', '*\1*', $html);
$html=preg\u replace('~\s*(.*?\s*\s*~i','*\1*',$html);
\s
在标记和要保留的字符串之间,将去除要修剪的空间。i
标志仅用于区分大小写,我使用了~
作为分隔符,因此不必转义正斜杠
除此之外,我还希望删除bold标记中的前导空格和尾随空格
很简单,这样就可以了
$html = preg_replace('/<b>\s+(.*?)\s+<\/b>/', '*\1*', $html);
$html=preg_replace('/\s+(.*?\s+/','*\1*',$html);
见
除此之外,我还希望删除bold标记中的前导空格和尾随空格
很简单,这样就可以了
$html = preg_replace('/<b>\s+(.*?)\s+<\/b>/', '*\1*', $html);
$html=preg_replace('/\s+(.*?\s+/','*\1*',$html);
见