2011-12-08 71 views
0

我有json數據作爲傳遞給javascript的字符串。在字符串傳遞之前,我正在php中搜索所有雙引號並替換它們。這工作正常,但一些JSON字符串有(看起來像)一個MS Word風格雙引號,可能是斜體。所以我的<?php $t = str_replace("」", "", $t); ?>方法調用不是逃避特殊的雙引號。str_replace來自單詞的雙引號

我需要找到charcode並轉義嗎?我嘗試將字符串中的引號拼接起來,然後將其粘貼到php方法中,但它仍然不會將該字符識別爲不同的雙引號。

讓我看看,如果我能在這裏粘貼報價 - < 「 >< 」 >

謝謝。

+0

你爲什麼要替換它們? –

+0

是JSON格式的這些雙引號部分還是他們自己的數據? –

+0

用戶輸入的一部分 –

回答

4
<?php 
function mb_str_replace($needle, $replacement, $haystack) { 
    return implode($replacement, mb_split($needle, $haystack)); 
} 
$t = "as「da」sd"; 
$t = mb_str_replace("」", "", $t); 
$t = mb_str_replace("「", "", $t); 
#and all the other weird quotes :) 
echo $t; 
?> 

http://php.net/manual/en/ref.mbstring.php

http://www.regular-expressions.info/unicode.html

我會建議使用的preg_replace代替

$t = "as「da」sd"; 
$t = preg_replace("/[」「]/u","",$t); #just create a character class 
echo $t; 

這可能是有用的: http://axonflux.com/handy-regexes-for-smart-quotes

+0

感謝您的詳細信息@jackdoe/u表示什麼...它給我'編譯失敗:錯誤0時出現無效的UTF-8字符串錯誤。 –

+0

@TimJoyce http://php.net/manual/en/reference.pcre.pattern.modifiers.php – jackdoe

+0

@TimJoyce btw,不要忘記以UTF-8格式保存你的php,否則你將不得不輸入字符代碼具體的引號,因爲即使他們在編輯器後看起來OK,他們可能會被屠殺,然後即使第一個str_replace也可以工作,但是當我使用unicode時,我總是傾向於特定的,所以我確信函數i我使用知道它是unicode – jackdoe

1

我嘗試過自己,所以只有我可以想出你必須使用UTF-8編碼。

<?php 
    header('content-type: text/html; charset=utf-8'); 
    $str = "「 > and < 」\""; 
    $replaceArr = array("「", "」", "\""); 
    $replaced = str_replace($replaceArr,"",$str); 
    echo $replaced; 
?> 

當我嘗試它時看起來很乾淨。