如何用一个字符替换一个或多个连续的空格?

Ibr*_*mar 5 php

我想生成像SEO友好URL这样的字符串.我希望消除多个空格,用连字符(-)替换单个空格,然后strtolower不允许使用特殊字符.

为此,我目前的代码是这样的:

$string = htmlspecialchars("This    Is The String");
$string = strtolower(str_replace(htmlspecialchars((' ', '-', $string)));
Run Code Online (Sandbox Code Playgroud)

上面的代码将生成多个连字符.我想消除多个空间,只用一个空格替换它.简而言之,我正在努力实现像字符串一样的SEO友好URL.我该怎么做?

Pau*_*xon 18

您可以使用preg_replace用短划线替换任何空白字符序列...

 $string = preg_replace('/\s+/', '-', $string);
Run Code Online (Sandbox Code Playgroud)
  • 外斜线是图案的分隔符 - 它们只标记图案的开始和结束位置
  • \ s匹配任何空格字符
  • +使前一个元素匹配1次或更多次.默认情况下,这是"贪婪",所以它将尽可能多地吃掉连续的比赛.
  • 有关更多详细信息,请参阅PCRE语法的手册页