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

khu*_*hbu 21 php

当它们与PHP中的破折号一起出现时如何替换空格和破折号?

例如下面是我的网址

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes
Run Code Online (Sandbox Code Playgroud)

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

You*_*nse 43

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

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

$url = preg_replace("![^a-z0-9]+!i", "-", $url);
Run Code Online (Sandbox Code Playgroud)

  • 你必须首先切断域名,否则你将失去你的点. (4认同)

cod*_*ict 2

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

$str = preg_replace('/\s*-\s*/','-',$str);
Run Code Online (Sandbox Code Playgroud)

这甚至会取代-没有任何空格包围的-!!

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

$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);
Run Code Online (Sandbox Code Playgroud)

现在,这将确保 a-在被替换时周围至少有一个空间。