PHP - 字符串操作:删除特殊字符并替换空格

4

我从数据库获取字符串,然后使用这些字符串构建URL。我的问题是,有些字符串会包含像 < > & { } * 这样的特殊字符,但该字符串中也可能有空格。如何将空格替换为破折号,并从字符串中完全删除所有特殊字符?


使用urlencode()可能会更容易。它可以使字符串在URL中安全使用。 - mellowsoon
5个回答

9

如果你假设除了A-Z之外没有其他字母字符,这将起作用;根据您的情况,这可能是一个太天真的假设。 - Piskvor left the building

3

使用 str_replace 函数:

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

注意:
如果replace 的值少于search,则剩余的替换值将使用空字符串。

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"

2
$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);

这将创建带有破折号的字符串(仅包含字母数字字符和破折号)。用于创建URI字符串。

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

字母数字:

$output = preg_replace("/[^A-Za-z0-9]/","",$input); 

如果你想保留字符:

 htmlspecialchars($string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接