我有一個字符串:「Blah等等等等」等等等等等等,我需要將此字符串上的引號替換爲«等等等等»如何替換雙引號?
我試圖使用此腳本:
$m=preg_replace('/([^\s>])\\\"/s',"$1»",$m);
$m=preg_replace('/\\\"([^\s])/s',"«$1",$m);
但是當字符串從空間開始,我有類似的東西:
»Some text» Some text Some text
我怎樣才能做到這一點?
我有一個字符串:「Blah等等等等」等等等等等等,我需要將此字符串上的引號替換爲«等等等等»如何替換雙引號?
我試圖使用此腳本:
$m=preg_replace('/([^\s>])\\\"/s',"$1»",$m);
$m=preg_replace('/\\\"([^\s])/s',"«$1",$m);
但是當字符串從空間開始,我有類似的東西:
»Some text» Some text Some text
我怎樣才能做到這一點?
最直接的方法可能是使用lookarounds來檢測它的報價是直接前一個字或之後。
$m = preg_replace('/"(?=\w)/', '«', $m);
$m = preg_replace('/(?<=\w)"/', '»', $m);
這對您的示例很有效,但可能過於簡單。你可能想要更進一步,尋找一個詞的字符或標點符號,所以「等等等等。」也會匹配。這將使第二個例子是這樣的:/(?<=[\w,.?!\)])"/
可能是這樣的嗎?
$m=str_replace("<","",$m);
$m=str_replace("&rt;","",$m);
$str = '"Test string "blabla" sdf "dd" dffdsf"';
$result = preg_replace('/(\s)"([^"]+)"(\s)/', '$1«$2»$3', $str);
$result = preg_replace('/^"(.*?)"$/', '«$1»', $result); // replace first and last quotes
此代碼僅適用於沒有太多的嵌套引號中的字符串。此代碼不能用於字符串工作:
「測試‘字符串是‘測試’測試’測試」
你的例子使用「智能」引號,但我假設你使用正則表達式,你實際上會取代直引號? –
我只能用正則表達式。是的,原文使用直引號,它們是相同的。這是一個問題。我需要在文本中將「這些引號」替換爲「這些引號」。 (對不起,我的英語不好) –