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

在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字符串

$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);