我從數據庫中獲取字符串,然後使用字符串構建URL。我的問題是,一些字符串將有像<> &> & {} *一般特殊字符,但字符串也可能有字符串。我怎麼會用破折號替換空格,並從字符串中完全刪除和特殊字符?PHP - 字符串操作刪除特殊字符並替換空格
4
A
回答
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"
這可能是更容易使用進行urlencode()。它使得在URL中使用字符串安全。 – mellowsoon 2010-10-23 18:07:13