web-dev-qa-db-ja.com

この文字(Â)とは何ですか?PHPでどのように削除しますか?

大文字のAで、上部に^が付いています:Â

それはウェブページから引き出された文字列に現れています。これは、元のサイトの元の文字列に以前は空のスペースがあった場所に表示されます。これは私のデータベースに保存されている実際の文字です。それを含む文字列をエコーすると、Webサイトに表示されるものでもあります。

最初にWebページを処理したときに文字エンコードの問題であることに気付きましたが、現在はデータベースでこれらの文字に固執しています。この文字を含むhtmlを出力する前に、この文字が表示されたとき、またはphpのどこかで変換する必要があります。元のドキュメントを再処理できません。

Str_replace()とhtml_entity_decode()を試しましたが、どちらも何もしません。

他に何を試すべきですか?

16
T. Brian Jones

ここでの問題は「ラテン1」です。 Latin-1コードページに保存できないWebページで使用できるUTF-8文字は約65256文字です。

あなたの差し迫った問題について、あなたはできるはずです

$clean = str_replace(chr(194)," ",$dirty)

ただし、問題はほぼ確実に再発するため、データベースをutf-8ASAPを使用するように切り替えます。

20
James Anderson

これは実際には1文字ではなく、コンテンツのエンコードとブラウザのエンコードのずれが原因である可能性があります。出力されたページのエンコーディングを使用しているものに設定してみてください。

例えばセクションで、出力:

echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";

(UTF-8を使用しているものに調整します)

8
Sheepy

これは私のために働きます:

$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);
7
Grant

これをよく使う

function cleanStr($value){
    $value = str_replace('Â', '', $value);
    $value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
    return $value;
}
3
iautomation

私は実際にこれらすべてを持っていなければなりませんでした:

    <--!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/" /--> 
0
Grace Simmons

これはデータベースからのものであるため、次のようなSQLクエリを使用してデータベースから最適なオプションを削除します。

UPDATE products SET description = REPLACE(description, 'Â', ' ');
0

この問題は、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")
0
roetnig

文字列からâ文字を削除するには

mysqli_set_charset($ con、 "utf8");

$ price = "₹ 250.00";

$ price2 = preg_replace( '/ [^(\ x20-\x7F)] * /'、 ''、$ price);

結果:250.00

0
Solomon

ベローコードを使用する

echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
echo htmlspecialchars_decode($your_string, ENT_QUOTES);
0
Koushik Samanta