2011-12-03 17 views
1

私は、文字列があります:「何とか何とか何とか 『何とか』何とか何とか」を、と私は«何とか何とか何とか«何とか»何とか何とか»私はこのスクリプトを使用しようとしていた二重引用符を置き換える方法は?

をするには、この文字列に引用符を交換する必要があります。

$m=preg_replace('/([^\s>])\\\"/s',"$1»",$m); 
$m=preg_replace('/\\\"([^\s])/s',"«$1",$m); 

しかし、文字列がスペースから始まるとき、私はそのような何かを持っている:

»Some text» Some text Some text 

私はこれをどのように行うことができますか?

+0

この例では「スマート」引用符を使用していますが、正規表現を使用しているので実際にはまっすぐ引用符を置き換えるので、私は想定していますか? –

+0

私はちょうどregexpを使うことができます。はい、元のテキストはストレート引用符を使用し、それらは同じです。それは問題だ。私はテキスト上の "これらの引用符"に "これらの引用符"を置き換える必要があります。 (私の悪い英語のために申し訳ありません) –

答えて

2

最も直接的なアプローチは、引用符の前に直接あることを検出するために、前後参照を使用するかもしれません言葉の直後に。

$m = preg_replace('/"(?=\w)/', '«', $m); 
$m = preg_replace('/(?<=\w)"/', '»', $m); 

これはあなたの例ではうまくいくが、あまりにも単純すぎるかもしれない。さらに進んで、文字や記号を探すことができます。も一致します。 /(?<=[\w,.?!\)])"/

-1

そうかもしれませんか?

$m=str_replace("&lt;","",$m); 
$m=str_replace("&rt;","",$m); 
0
$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 

このコードは、多くのネストされた引用符なしの文字列のために働きます。このコードは、文字列では動作しません。

「テスト 『の文字列は『テスト』テスト』テスト」

関連する問題