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

时间:2010-11-22 11:01:33

标签: php

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

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

$string = htmlspecialchars("This    Is The String");
$string = strtolower(str_replace(htmlspecialchars((' ', '-', $string)));

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

3 个答案:

答案 0 :(得分:18)

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

 $string = preg_replace('/\s+/', '-', $string);
  • 外斜线是图案的分隔符 - 它们只标记图案的开始和结束位置
  • \ s匹配任何whitespace character
  • +使前一个元素为match 1 or more times。默认情况下,这是“贪婪”,所以它将尽可能多地吃掉连续的比赛。
  • 有关详细信息,请参阅PCRE syntax上的手册页

答案 1 :(得分:0)

echo preg_replace('~(\s+)~', '-', $yourString);

答案 2 :(得分:0)

你想要的是“slugify”一个字符串。尝试搜索SO或google上的“php slugify”或“php slug”。