Php 如何替换多个&;nbsp和带一的空白;nbsp并将仅空白块压缩为一个空格?
我有以下自定义文本和HTML:Php 如何替换多个&;nbsp和带一的空白;nbsp并将仅空白块压缩为一个空格?,php,regex,string,Php,Regex,String,我有以下自定义文本和HTML: $text = "<p>Hello World! Javascript development PHP Developer </p>"; $text=“你好,世界!Javascript开发PHP开发者””; 如何使用正则表达式将该文本更改为以下内容: "
$text = "<p>Hello World! Javascript development PHP Developer </p>";
$text=“你好,世界!Javascript开发PHP开发者””;
如何使用正则表达式将该文本更改为以下内容:
"<p>Hello World! Javascript development PHP Developer</p>"
“你好,世界!Javascript开发PHP开发者”
代码:
$text = "<p>Hello World! Javascript development PHP Developer </p>";
$result = preg_replace("/( )+/", " ", $text);
echo $result;
$text=“你好,世界!Javascript开发PHP开发者””;
$result=preg_replace(“/()+/”,“”,$text);
回声$结果;
您的输入文本在大多数
之后包含空格,而您的正则表达式不考虑这些空格。您可以使用\s*
在每个不可断开的空格HTML实体之前和之后允许零个或多个空格
$result=preg_replace(“/(\s*\s*)+/”,“,$text);
您可以使用
$find = ['/^((?: |\s)+)|(?1)$/', '/\s* (?:\s* )*\s*/', '/\s+/'];
$replace = ['', ' ',' '];
$text = preg_replace($find, $replace, trim($text));
看
详细信息
=>'/^((?:|\s)+)|(?1)$/'
删除字符串开头/结尾的'
和空格(
此处仅递归(?1)
,并将模式缩短一点)(?:|\s)+
=>'/\s*(?:\s*)*\s*/'
将所有空格序列替换为至少一个'
和一个
=>'/\s+/'
将1+空格替换为1个常规空格'
preg\u replace([“/\s*(?:\s*)*\s*/”、“/\s+/”]、[“,”、“,”、$text)
()@WiktorStribiżew您的regexp部分工作。如何添加这样一条规则,使文本开头和结尾没有
?与当前问题无关,因为它不是将多个连续的单个单词缩减为一个出现。