转义"str_replace"PHP函数中的特殊字符

use*_*858 1 php replace str-replace

我有以下功能str_replace:

function url_seo($text)
{
    $match    = array(']','\\',';',"'",',','.','/','~','`','=');
    $replace  = array('-','','','','','','','','','');
    $text     = str_replace($match, $replace, $text);
    return $text;
}
Run Code Online (Sandbox Code Playgroud)

我应该\$match变量中的所有字符之前放置一个如下:

$match = array('\]','\\','\;',"\'",'\,','\.','\/','\~','\`','\=');
Run Code Online (Sandbox Code Playgroud)

还是没有必要?

Wik*_*żew 10

根据str_replace PHP参考,

search
正在搜索,也称为.一个阵列可以被用来指定多个.

因此,这不是正则表达式,除了必须始终转义的转义序列之外,您不必转义任何字符.

\"打印下一个字符作为双引号,而不是字符串close
\'将下一个字符打印为单引号,而不是字符串close
\n打印新行字符
\t打印制表符
\r打印回车符(不经常使用)
\$将下一个字符打印为一个美元,而不是变量的一部分
\\将下一个字符打印为反斜杠,而不是转义字符

因此,只有\在你的字符串数组中才应该进行转义.

根据串预选赛的象征,你也可能有逃避'",但你可以交替他们,你已经做了:'"'并且"'"是避免过度逃脱的好办法.