我有以下自定义文本和HTML:
$text = "<p>Hello World! Javascript development PHP Developer </p>";
如何使用正则表达式将该文本更改为以下内容:
"<p>Hello World! Javascript development PHP Developer</p>"
代码:
$text = "<p>Hello World! Javascript development PHP Developer </p>";
$result = preg_replace("/( )+/", " ", $text);
echo $result;
答案 0 :(得分:1)
您可以使用
$find = ['/^((?: |\s)+)|(?1)$/', '/\s* (?:\s* )*\s*/', '/\s+/'];
$replace = ['', ' ',' '];
$text = preg_replace($find, $replace, trim($text));
请参见PHP demo。
详细信息
'/^((?: |\s)+)|(?1)$/'
=> ''
删除了字符串的开始/结尾处的
和空格({(?1)
在这里只是递归(?: |\s)+
,在这里使图案短一些)'/\s* (?:\s* )*\s*/'
=> ' '
用一个
替换至少一个
的所有空白序列和
'/\s+/'
=> ' '
用1个常规空间替换1+个空格。答案 1 :(得分:0)
您输入的文本包含大多数
之后的空格,您的正则表达式不占空格。您可以使用\s*
在每个不可中断的空间HTML实体前后允许零个或多个空间。
$result = preg_replace('/(\s* \s*)+/', ' ', $text);