0

に非標準のマークや特殊文字を変換するような文字に変換する方法があります:PHPは通常の

:それは内蔵の後にスペースを

É É é à Ç etc 

とも感嘆符のこのタイプは、

通常のバージョンです。現時点では私はこのようなコードを持っている:彼らは同じものに置き換えているよう

$linesvalue = str_replace(["Ç","ç"],"ç",$linesvalue); 
$linesvalue = str_replace(["É","É","é"],"é",$linesvalue); 
$linesvalue = str_replace("è","è",$linesvalue); 
$linesvalue = str_replace("à","à",$linesvalue); 
$linesvalue = str_replace("â","â",$linesvalue); 
$linesvalue = str_replace("ê","ê",$linesvalue); 

彼らは見えるが、彼らは確かにありません。とにかく、これはあまりにも悪くないですが、私は感嘆符(!)を置き換えようとすると、特にüなどのアクセント付き文字を置き換えるように見えます。

事前にテキスト全体を変換する方法はありますか?

+0

をやっていますか? – Qirel

+0

[正規化フォーム](http://php.net/manual/en/class.normalizer.php)Cを使用して、アクセント記号などの結合記号を正規化します。フォームKCはさらに、U + FF01のような全角文字を標準バージョンに変換する必要があります。 – nwellnhof

+0

これは興味深いようです - これを回答として投稿したいですか?とにかくあなたが与えたリンクからどのように実装されているかはまったく確かではありません。 – Hasen

答えて

1

normalization form Cを使用すると、アクセントのような結合マークを正規化できます。フォームKCはさらに、U + FF01のような全角文字を標準バージョンに変換します。

例:

<?php 
$string = "É É é à Ç !"; 
print "before: $string\n"; 
print "hex: " . unpack("H*", $string)[1] . "\n"; 
$string = Normalizer::normalize($string, Normalizer::FORM_KC); 
print "after: $string\n"; 
print "hex: " . unpack("H*", $string)[1] . "\n"; 

出力:彼らはあなたがいない場合は、何らかの形で壊れて表示されますので、あなたはこれを

before: É É é à Ç ! 
hex: c3892045cc812065cc812061cc802043cca720efbc81 
after: É É é à Ç ! 
hex: c38920c38920c3a920c3a020c3872021 
関連する問題