PHP str_replace斜杠和引用

时间:2013-04-24 06:42:05

标签: php

我从db中调用了我的数据,其中包含'的单词company's,有些单词显示为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;
}

请指教,谢谢!

5 个答案:

答案 0 :(得分:2)

有一个内置的php函数stripslashes

echo stripslashes($data);

答案 1 :(得分: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

答案 2 :(得分:1)

您可以在mysql_real_escape_string()insert时使用update功能,而不必替换'quot等特殊字符。< / p>

答案 3 :(得分:1)

这是你需要使用额外的反斜杠来逃避它们的特殊字符

str_replace("\\","", $data);

答案 4 :(得分:1)

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

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

// Outputs: Is your name O'reilly?
echo stripslashes($str);