2010-10-23 74 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"