[英]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.