使用PHP语言将所有空格和特殊符号替换为URL中的破折号

时间:2010-04-13 06:47:46

标签: php

当它们与PHP中的短划线一起出现时如何替换空格和短划线?

以下是我的网址

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes

在此我想用PHP中的破折号替换所有特殊字符。在URL中,在“阳台”之后已经有一个破折号。如果我用特殊字符替换短划线,那么它会变成两个短划线,因为URL中已经有一个短划线,我只想要一个破折号。

5 个答案:

答案 0 :(得分:42)

我会说你可能想要别的方式。不是“空格”,而是每个非字母数字字符。 因为可能有其他字符,在URl中不允许(例如,+符号,用作空格替换)

因此,要从自由格式文本中创建有效的网址

$url = preg_replace("![^a-z0-9]+!i", "-", $url);

答案 1 :(得分:2)

如果连字符周围最多有一个空格,您可以使用John的答案。如果可以有多个空格,您可以尝试使用preg_replace

$str = preg_replace('/\s*-\s*/','-',$str);

这甚至会替换-未被-空格包围的$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);

为了提高效率,你可以做到:

-

现在这将确保{{1}}在被替换时至少有一个空间围绕它。

答案 2 :(得分:2)

这应该为你做

strtolower(str_replace(array('  ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));

答案 3 :(得分:1)

应用此正则表达式/[^a-zA-Z0-9]/, '-',它将用-替换所有非字母数字字符。将其存储在变量中并再次应用此正则表达式/\-$/, '',它将转义最后一个字符。

答案 4 :(得分:0)

它的旧版本,但帮助一个,使用此功能:

function urlSafeString($str)
{
    $str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str));
    $str = eregi_replace("[\040]+","-",trim($str));
    return $str;
}

它会返回一个url安全字符串