以外のすべての目に見えない文字を削除します。UTF-8文字列は改行
$string = preg_replace('/\p{C}+/u', '', $string);
これは正常に動作しますが、私はそのようにそれをどのように変えますか改行以外のすべての見えない文字を削除しますか?私は[^ \ n]などを使っていくつかのものを試しましたが、うまくいきません。
ありがとうございます!
編集:改行文字は、あなたがそれを行う前に、「\ n」の
以外のすべての目に見えない文字を削除します。UTF-8文字列は改行
$string = preg_replace('/\p{C}+/u', '', $string);
これは正常に動作しますが、私はそのようにそれをどのように変えますか改行以外のすべての見えない文字を削除しますか?私は[^ \ n]などを使っていくつかのものを試しましたが、うまくいきません。
ありがとうございます!
編集:改行文字は、あなたがそれを行う前に、「\ n」の
"double negation"を使用してください:
$string = preg_replace('/[^\P{C}\n]+/u', '', $string);
説明:
\P{C}
は[^\p{C}]
と同じです。[^\P{C}]
は\p{C}
と同じです。\n
のような他の文字を取り除くことができます。で、++++++++
のようなランダムな文字列を改行に(私はあなたが\n
のようなものを使用していると仮定)(あなたによって除去されることはありません任意の文字列を置換します正規表現は自然にあなたの文字列には現れません)、preg_replaceを実行してから++++++++
を\n
に置き換えてください。
$string=str_replace('\n','++++++++',$string); //Replace \n
$string=preg_replace('/\p{C}+/u', '', $string); //Use your regexp
$string=str_replace('++++++++','\n',$string); //Insert \n again
そうすべきです。あなたの代わりに\n
の<br/>
を使用している場合、アサーションが一致するものを除き、文字クラスにすることができ、負のアサーションを使用して私の単純ので、改行を維持するためにnl2brを使用して、代わりに\n
\ nです。あなたが記述したものは、私がこの時点で使用しているものですが、私は正規表現がそれを行うことができるようにきちんとしているとは思っていません(私は思っていますが、どういうわけか分かりません) – Stefan
ありがとう!これは完璧に動作しているようです:) – Stefan