簡體   English   中英

如何刪除所有特殊字符和空格,但逗號(,),冒號(:),雙引號(“)和字符串的花括號除外

[英]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 char替換為空字符串。 如果您確定只有\\ u00a0,則可以將正則表達式更改為#\\\\\\\ #i

在這里嘗試快速運行: http : //ideone.com/xW4zTN

當我使用這個preg_replace("/[^a-zA-Z]/", "", $str); ..它將刪除所有特殊字符。 是否可以跳過逗號,雙引號,大括號和冒號?

當然可以,只需在字符類中包括這些特殊字符即可(引號必須使用反斜杠進行轉義):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM