大文字のAで、上部に^が付いています:Â
それはウェブページから引き出された文字列に現れています。これは、元のサイトの元の文字列に以前は空のスペースがあった場所に表示されます。これは私のデータベースに保存されている実際の文字です。それを含む文字列をエコーすると、Webサイトに表示されるものでもあります。
最初にWebページを処理したときに文字エンコードの問題であることに気付きましたが、現在はデータベースでこれらの文字に固執しています。この文字を含むhtmlを出力する前に、この文字が表示されたとき、またはphpのどこかで変換する必要があります。元のドキュメントを再処理できません。
Str_replace()とhtml_entity_decode()を試しましたが、どちらも何もしません。
他に何を試すべきですか?
ここでの問題は「ラテン1」です。 Latin-1コードページに保存できないWebページで使用できるUTF-8文字は約65256文字です。
あなたの差し迫った問題について、あなたはできるはずです
$clean = str_replace(chr(194)," ",$dirty)
ただし、問題はほぼ確実に再発するため、データベースをutf-8ASAPを使用するように切り替えます。
これは実際には1文字ではなく、コンテンツのエンコードとブラウザのエンコードのずれが原因である可能性があります。出力されたページのエンコーディングを使用しているものに設定してみてください。
例えばセクションで、出力:
echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
(UTF-8を使用しているものに調整します)
これは私のために働きます:
$string = "Sentence ‘not-critical’ and \n sorting ‘not-critical’ or this \r and some ‘not-critical’ more. ' ! -.";
$output = preg_replace('/[^(\x20-\x7F)\x0A\x0D]*/','', $string);
これをよく使う
function cleanStr($value){
$value = str_replace('Â', '', $value);
$value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
return $value;
}
私は実際にこれらすべてを持っていなければなりませんでした:
<--!DOCTYPE html-->
<--html lang="en-US"-->
<--head-->
<--meta charset="utf-8"-->
<--meta http-equiv="X-UA-Compatible" content="IE=Edge"-->
<--meta name="viewport" content="width=device-width, initial-scale=1"-->
<--meta http-equiv="Content-Type" content="text/html; charset=utf-8/" /-->
これはデータベースからのものであるため、次のようなSQLクエリを使用してデータベースから最適なオプションを削除します。
UPDATE products SET description = REPLACE(description, 'Â', ' ');
この問題は、Webで別の文字セットを使用している場合に発生します。
これを解決するには(例ではutf-8を使用):
の中に <HEAD>
ページの追加charset
:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
送信するフォームには、add accept-charset
:
<form name="..." method=".." id=".." accept-charset="utf-8">
Php + MySQLiを使用してフォームを処理している場合は、データベース接続が文字セットもサポートしていることを確認する必要があります。手続き型:
mysqli_set_charset($link, "utf8");
オブジェクト指向のスタイル:
$mysqli->set_charset("utf8")
文字列からâ文字を削除するには
mysqli_set_charset($ con、 "utf8");
$ price = "₹ 250.00";
$ price2 = preg_replace( '/ [^(\ x20-\x7F)] * /'、 ''、$ price);
結果:250.00
ベローコードを使用する
echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
echo htmlspecialchars_decode($your_string, ENT_QUOTES);