当它们与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)
如果连字符周围最多有一个空格,您可以使用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-
在被替换时周围至少有一个空间。