PHP - 字符串操作删除特殊字符并替换空格
问题描述:
我从数据库中获取字符串,然后使用字符串构建URL。我的问题是,一些字符串将有像<> &> & {} *一般特殊字符,但字符串也可能有字符串。我怎么会用破折号替换空格,并从字符串中完全删除和特殊字符?PHP - 字符串操作删除特殊字符并替换空格
答
随着str_replace
:
$str = str_replace(array(' ', '<', '>', '&', '{', '}', '*'), array('-'), $str);
注:
如果替换为的值小于搜索,则替换值的其余部分将使用空字符串。
答
使用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
答
str_replace(' ','-',$string);
字母:
$output = preg_replace("/[^A-Za-z0-9]/","",$input);
如果你想保持字符
:
htmlspecialchars($string);
答
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