如何删除字符串PHP中除逗号(,)、冒号(:)、双引号(";)和大括号外的所有特殊字符和空格


How to remove all special characters and spaces except Comma(,), Colon(:),Double quote(") and curly braces of a string PHP

如何清理此JSON字符串数据?。乍一看,使用str_replace方法非常容易,但事实并非如此。这个JSON字符串是一个JSON对象,它有空格表示ex。{"名字":"某物"}。因此,当我将其转换为json字符串时,空格被不需要的字符串(''u00a0)所取代。我认为使用preg_replace可以解决这个问题,但突然我不知道逗号、双引号和冒号的正则表达式了。此字符对于json字符串格式是必需的。请帮帮我。

例如

       {"AS_applicant_Data__c":
            "{
                '"Last Name'u00a0'":'"SDFSAD'",
                '"First Name'u00a0'":'"SDFAFSDA'",
                '"Middle Name'u00a0'":'"SAFDSAFD'",
                '"Gender'u00a0'":'"Male'"
            }"
        }

        {"AS_applicant_Data__c":"
            "{
                "Last Name":"SDFSAD",
                "First Name":"SDFAFSDA",
                "Middle Name":"SAFDSAFD",
                "Gender":"Male"
            }"
        }

我使用这段代码,它对我来说还可以:

<?php
$string = <<<EOD
{"AS_applicant_Data__c":
    "{
        '"Last Name'u00a0'":'"SDFSAD'",
        '"First Name'u00a0'":'"SDFAFSDA'",
        '"Middle Name'u00a0'":'"SAFDSAFD'",
        '"Gender'u00a0'":'"Male'"
    }"
}
EOD;
$pattern = '#''''u[0-9a-f]{4}#i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>

此正则表达式盲目地用空字符串替换''uxxxx格式的Unicode字符。如果您确信只有''u00a0,则可以将regex更改为#''''u00a0#i

尝试在此处快速跑步:http://ideone.com/xW4zTN

当我使用这个preg_replace("/[^a-zA-Z]/", "", $str);。。它会删除所有特殊字符。可以跳过吗逗号、双引号、大括号和冒号?

当然,只需在字符类中包含那些特殊字符(引号必须用反斜杠转义):

preg_replace("/[^a-zA-Z,'"{}:]/", "", $str);