我从数据库获取字符串,然后使用这些字符串构建URL。我的问题是,有些字符串会包含像 < > & { } * 这样的特殊字符,但该字符串中也可能有空格。如何将空格替换为破折号,并从字符串中完全删除所有特殊字符?
使用preg_replace
仅保留字符串中的字母和数字:
$string = preg_replace('/[^a-zA-Z0-9-]/', '', $string);
str_replace
函数将空格替换为 -。$string = str_replace (" ", "-", $string);
请查看以下文章:
使用 str_replace
函数:
$str = str_replace(array(' ', '<', '>', '&', '{', '}', '*'), array('-'), $str);
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"
$search_value =array(",",".",'"',"'","\\"," ","/","&","[","]","(",")","
{","}",":","`","!","@","#","%","=","+");
$replace_value =array("-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-
","-","-","-","-","-");
$product_name = str_replace($search_value,$replace_value,$row["Product_Name"]);
$product_name = str_replace("--","-",$product_name);
$product_name = str_replace("--","-",$product_name);
$product_name = preg_replace('/-$/', '', $product_name);
$product_name = preg_replace('/^-/', '', $product_name);
str_replace(' ','-',$string);
字母数字:
$output = preg_replace("/[^A-Za-z0-9]/","",$input);
如果你想保留字符:
htmlspecialchars($string);