如何合并两个正则表达式模式模型?

假设我有一个字符串。

`$str = "   Hi, my  name is 
         Petr"; `

期待:$str = " Hi, my name is Petr";

我需要替换字符串开头的所有空格“....”,然后如果字符串中的单词之间有多个空格,则将其替换为一个空格。

我想用正则表达式函数'preg_replace'来做到这一点。

但我不知道如何"/^\s+/"删除字符串开头的空格以及字符串"/\s+/"中单词之间的空格。是否可以将两个公式模式合并为一个模式?如果是这样,公式会是什么样子?


互换的青春
浏览 205回答 2
2回答

qq_笑_17

有几种方法可以实现这一目标。您可以利用preg_replace可以采用一系列模式和替换来使用您的两个正则表达式的事实:$str = "&nbsp; &nbsp;Hi, my&nbsp; name is&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Petr";echo preg_replace(array('/^\s+/', '/\s+/'), array('', ' '), $str) . "\n";或者,您可以使用稍微复杂一点的正则表达式,使用正则后向删除以字符串开头 ( ^) 或其他空格开头的任何空格序列:echo preg_replace('/(?<=^|\s)\s+/', '', $str);在这两种情况下,输出都是Hi, my name is PetrHi, my name is Petr

jeck猫

我猜,$str = '&nbsp; &nbsp;Hi, my&nbsp; name is&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Petr';$result = preg_replace('/\s{2,}/', ' ', $str);$result = preg_replace('/^\s*|\s*$/', '', $result);echo $result;可能工作正常,它会输出:Hi, my name is Petr
打开App,查看更多内容
随时随地看视频慕课网APP