2

我从 db 调用了我的数据,其中包含'诸如之类的单词,company's并且一些单词显示为 like company\\\\\'s,尽管我具有将所有这些特殊字符替换为正常字符的功能,但诸如此类company\'s的措辞仍然存在。有什么合适的方法可以正确替换各种特殊字符吗?

function chrEncode($data) {
    $data = str_replace('’', ''' ,$data);
    $data = str_replace('é', 'é' ,$data);
    $data = str_replace('â€', '-' ,$data);
    $data = str_replace('-œ', '"' ,$data);
    $data = str_replace('“', '"' ,$data);
    $data = str_replace('ê', 'ê' ,$data);
    $data = str_replace('ö', 'ö' ,$data);
    $data = str_replace('…', '...' ,$data);
    $data = str_replace('-¦', '...' ,$data);
    $data = str_replace('–', '–' ,$data);
    $data = str_replace('′s', '’' ,$data);
    $data = str_replace('-²s', '’' ,$data);
    $data = str_replace('‘', ''' ,$data);
    $data = str_replace('-˜', ''' ,$data);
    $data = str_replace('-“', '-' ,$data);
    $data = str_replace('è', 'è' ,$data);
    $data = str_replace('(', '(' ,$data);
    $data = str_replace(')', ')' ,$data);
    $data = str_replace('•', '•' ,$data);
    $data = str_replace('-¢', '•' ,$data);
    $data = str_replace('§', '•' ,$data);
    $data = str_replace('®', '®' ,$data);
    $data = str_replace('â„¢', '™' ,$data);
    $data = str_replace('ñ', 'ñ' ,$data);
    $data = str_replace('Å‘s', 'ő' ,$data);
    $data = str_replace('\\\"', '"' ,$data);
    $data = str_replace("\r", '<br>' ,$data);
    $data = str_replace("\\r", '<br>' ,$data);
    $data = str_replace("\n", '<br>' ,$data);
    $data = str_replace("\\n", '<br>' ,$data);
    $data = str_replace("\\\'", '&#39' ,$data);
    $data = str_replace("'", "&#39" ,$data);

    return $data;
}

请指教,谢谢!

4

5 回答 5

2

有一个内置的php函数stripslashes

echo stripslashes($data);
于 2013-04-24T06:45:33.937 回答
2

您可以使用 preg_replace 删除所有特殊字符,如下所示:

 preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $String);

或仅用于斜杠:

$str = 'h///e/ll\\o\\//\\';
str_replace(array('\\', '/'), '', $str); // output hello

另一种解决方案: - 创建一个干净的功能

     function clean($string) {
        $string = str_replace('', '-', $string); // Replaces all spaces with hyphens.
        return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
     }

用法:-

echo clean('a|"bc!@£de^&$f g');

将输出:abcdef-g

于 2013-04-24T06:46:10.117 回答
1

需要stripslashes来摆脱斜线......

$str = "Is your name O\'reilly?";

// Outputs: Is your name O'reilly?
echo stripslashes($str);
于 2013-04-24T06:45:31.707 回答
1

您可以使用mysql_real_escape_string()函数 wheninsertupdate,并且您不必替换特殊字符,例如',quot等。

于 2013-04-24T06:43:57.310 回答
1

这是特殊字符你需要像这样用额外的反斜杠来转义它们

str_replace("\\","", $data);
于 2013-04-24T06:43:58.493 回答