私はこのテキストを持っています...
「私は信頼できるようにしようとしているわけではありません」とデビッドは笑顔を広げて認めます.
...そして、それらの変な文字を削除したいのですが、試してみましstr_replace()
たが、うまくいきません。
何か案は?
おそらく、ソースエンコーディングとは異なるエンコーディングでテキストを処理したことがあります。
したがって、テキストがUTF-8の場合、現在UTF-8として処理していません。最も簡単な方法は、次のようなヘッダーを送信することです...
header('Content-Type: text/html; charset=UTF-8');
要素を追加することもできますがmeta
、それが要素の最初の子であることを確認してくださいhead
。
後でパッチを適用するのではなく、ソースで修正する必要があります(これはうまく機能しません)。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...
</head>
多くの場合、ソースが異なればエンコーディングも異なるため、ビューを表示するエンコーディングを指定する必要があります。Utf-8 は、すべての ASCII と他の非常に多くの言語をカバーするため、最も人気があります。
php の utf8_(de)encode は iso-8859-1 を utf-8 に変換し、反対の通常の文字列操作関数はマルチバイト (utf-8 である可能性がある) 文字を認識しません。mb_strings に固有の関数を使用するか、特定のパラメーターでエンコードを有効にします。
// 間違っていたらコメント
おそらく使用する必要がある別の文字エンコーディングを使用しています (utf-8 エンコーディングを使用する必要があります)。そのようにして全体的に問題が少なくなります)。
本当に PHP を使用して修正したい場合は、ctype_alpha() 関数を使用できます。次のようなことができるはずです。
$theString = "your text here"; // your input string
$newString = ""; // your new string
$i = 0;
while($theString[$i]) // while there are still characters in the string
{
if(ctype_alpha($theString[$i]) // if it's a character in your current set
{
$newString .= $theString[$i]; // add it to the new string, increment pointer, and go to next loop iteration
$i++;
continue;
} // if the specific character at the $i index is an alphabetical character, add it to the new string
else
{
$i++;
} // if it's a bad character, just move the pointer up by one for the next iteration
}
次に、必要に応じて $newString を使用します。ただし、実際には、このようにするのではなく、文字エンコーディングを変更してください。プロジェクト全体でエンコーディングを同じにしたい。