1

サイトに bing マップを埋め込んだところです。緯度と経度を取得するためのクエリ文字列は、ユーザーごとに異なります。残念ながら、国と都市の無料データベースには、たとえばこの場所のようなくだらないシンボルがBouaké, Côte d’Ivoireあり、 file_get_contents() 関数では読み取ることができませんBouaké,%20Côte%20d’Ivoire。これらの文字をエスケープする方法を誰か教えてもらえますか? 実際には、それらも削除するか、 のような英語の連想に置き換えて喜んでいますé -> e。前もって感謝します!

4

2 に答える 2

2

文字列はBouaké,%20Côte%20d’Ivoire既にエスケープされているように見えますが、html 用です。それらをhtml_entity_decode()で元に戻す必要があります。次に、URL の場合はrawurlencode()を使用して文字列をトラフに入れます。

HTMLエンティティなしで入力に到達できる場合はrawurlencode()、これらの文字列をリクエストURLに追加する前に使用してください。

アップデート

あなたのコメントから、名前をそのまま送信するだけではうまくいかないようです。アクセントのある文字をアクセントのない文字に置き換えることができます。これには、php 環境と iconv に適切なロケールをインストールする必要があります (入力が utf8 であると仮定します)。

$str = 'Bouaké,%20Côte%20d’Ivoire';
$old_locale = setlocale(LC_ALL, 'en_US.UTF8'); // setting the locale to an english one, saving the old
$ascii = iconv(
    'UTF-8',
    'ASCII//TRANSLIT//IGNORE', html_entity_decode($str, ENT_QUOTES, 'utf-8')
); // convert input to ascii transliterate from the locale data and ignore anything that cant be transliterated.
setlocale(LC_ALL, $old_locale); // restore the old locale
print rawurlencode($ascii); // => shoud print Bouake%2C%2520Cote%2520d%27Ivoire

これにより、文字列がエンコード可能な昇順のない ascii 文字列に変換されます (たとえば、'-s の場合)。

于 2013-06-10T09:01:39.217 に答える