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

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

例如下面是我的网址</ p>

  http://kjd.case.150/1 BHK + Balcony- 700+ sqft。 宽敞的公寓Bandra Wes 
</ code> </ pre>

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

展开原文

原文

How to replace spaces and dashes when they appear together with only dash in PHP?

e.g below is my URL

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

In this I want to replace all special characters with dash in PHP. In the URL there is already one dash after "balcony". If I replace the dash with a special character, then it becomes two dashes because there's already one dash in the URL and I want only 1 dash.

php
dongyi9023
dongyi9023 你想要你的网址是什么?HTTP://kjd.case.150/1-BHK-Balcony-700-sqft-spaciou-apartmetn-Bandra-West?
大约 10 年之前 回复
duan97689
duan97689 什么是特殊的炭?
10 年多之前 回复

5个回答



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

所以 ,从自由格式文本中创建有效网址</ p>

  $ url = preg_replace(“![^ a-z0-9] +!i”,“ - ”,  $ url); 
</ code> </ pre>
</ div>

展开原文

原文

I'd say you may be want it other way. Not "spaces" but every non-alphanumeric character. Because there can be other characters, disallowed in the URl (+ sign, for example, which is used as a space replacement)

So, to make a valid url from a free-form text

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

duankeng2026
duankeng2026 工作完美......谢谢
3 年多之前 回复
dongzhun8449
dongzhun8449 你必须首先切断域名,否则你将失去你的点。
大约 10 年之前 回复
dongyingdao8867
dongyingdao8867 那些不应该是正斜线,而不是感叹号吗?
大约 10 年之前 回复



这应该为你做了</ p>

  strtolower(str_replace(array(''  ,''),' - ',preg_replace('/ [^ a-zA-Z0-9 s] /','',trim($ string)))); 
</ code> </ pre> \ n </ div>

展开原文

原文

This should do it for you

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



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

展开原文

原文

Apply this regular expression /[^a-zA-Z0-9]/, '-' which will replace all non alphanumeric characters with -. Store it in a variable and again apply this regular expression /\-$/, '' which will escape the last character.



如果连字符周围可能有最多一个空格,您可以使用约翰。 如果可以有多个空格,您可以尝试使用 preg_replace : </ p>

  $ str = preg_replace('/ \ s *  -  \ s * /',' - ',$ str); 
</ code> </ pre> \ n

这甚至会替换 - </ code>,而不是用 - </ code>包围任何空格!! </ p>

为了提高效率,你可以做到:</ p>

  $ str = preg_replace('/ \ s +  -  \ s * |  \ s *  -  \ s + /',' - ',$ str); 
</ code> </ pre>

现在这将确保 - </ code>至少具有 在被替换时,它周围有一个空间。</ p>
</ div>

展开原文

原文

If there could be max one space surrounding the hyphen you can use the answer by John. If there could be more than one space you can try using preg_replace:

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

This would replace even a - not surrounded with any spaces with - !!

To make it a bit more efficient you could do:

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

Now this would ensure a - has at least one space surrounding it while its being replaced.



它的旧版本但是为了帮助某个人,使用此函数:</ p>

  function  urlSafeString($ str)
{
$ str = eregi_replace(“[^ a-z0-9 \ 040]”,“”,str_replace(“ - ”,“”,$ str));
$ str = eregi_replace(“[\ 040] +”,“ - ”,trim($ str));
返回$ str;
}
</ code> </ pre>

它将返回 你是一个网址安全字符串</ p>
</ div>

展开原文

原文

Its old tread but to help some one, Use this Function:

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

it will return you a url safe string

douaonong7807
douaonong7807 不推荐使用Eregi替换php.net/manual/fr/function.eregi-replace.php
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐