2010-10-23 180 views
4

我從數據庫中獲取字符串,然後使用字符串構建URL。我的問題是,一些字符串將有像<> &> & {} *一般特殊字符,但字符串也可能有字符串。我怎麼會用破折號替換空格,並從字符串中完全刪除和特殊字符?PHP - 字符串操作刪除特殊字符並替換空格

+0

這可能是更容易使用進行urlencode()。它使得在URL中使用字符串安全。 – mellowsoon 2010-10-23 18:07:13

回答

3

隨着str_replace

$str = str_replace(array(' ', '<', '>', '&', '{', '}', '*'), array('-'), $str); 

注:

如果替換爲的值小於搜索,則替換值的其餘部分將使用空字符串。

8

使用preg_replace只能存放在一個字符串字母和數字:

$string = preg_replace('/[^a-zA-Z0-9-]/', '', $string); 

您可以使用str_replace用來替換空間 -

$string = str_replace (" ", "-", $string); 

請看下面的文章:

+0

如果你認爲在A-Z之外沒有字母字符,這會起作用;取決於你的情況,這可能是也可能不是太天真的假設。 – Piskvor 2011-08-01 10:04:51

1
str_replace(' ','-',$string); 

字母:

$output = preg_replace("/[^A-Za-z0-9]/","",$input); 
如果你想保持字符

htmlspecialchars($string); 
2

1)的iconv
2)更換附加符號與空字符串
3更換非字母字符)用短劃線
4)將所要的短劃線字符字符串替換空間(也可以前修剪串操作)

例如,如果您使用UTF-8編碼:

setlocale(LC_ALL, 'fr_CA.utf8'); 
$str = "%#dŝdèàâ.,d s#$4.sèdf;21df"; 

$str = iconv("UTF-8", "ASCII//TRANSLIT", $str); // "%#dsdeaa.,d s#$4.sedf;21df" 
$str = preg_replace("`[^\w]+`", "", $str); // "dsdeaad s4sedf21df" 
$str = str_replace(" ", "-", $str); // "dsdeaad-s4sedf21df" 
$str = trim($str, '-'); // "dsdeaad-s4sedf21df"