cURL を使用してページを取得し、姓名を取得する単純な関数があります。
$base_url = 'http://www.behindthename.com/random/random.php';
$query = http_build_query($params);
$url = $base_url . '?' . $query;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close($curl);
サンプルの $params 配列は次のようになります。
Array (
[number] => 1
[gender] => f
[surname] =>
[randomsurname] => yes
[all] => no
[usage_lth] => 1
)
戻ってくる名前の中には、アクセントが含まれているものがあります (これは問題ありません。そうなってほしいと思います)。ただし、名前で特定のことを行うときは、アクセントを削除する必要があります。
Wordpress の remove_accents 関数を使用してみましたが、最初の !preg_match 条件が渡されないようです。条件は常に true と評価され、元の文字列が返されます。
ただし、アクセントを含む名前をコピーして貼り付け、ハードコードしてから remove_accents を実行すると、すべてが機能します。例えば:
$name = 'Þýri';
echo remove_accents($name);
「THyri」を返します。
私が知る限り、curl_exec の結果は utf8 であり、正常に動作するはずなので、よくわかりません。
cURL によって返された結果に対して remove_accents を直接呼び出してみましたが (名前を引き出す方法が混乱していないことを確認するため)、それも機能しません - アクセントが残ります。
また、!preg_match 条件を削除しようとしました。この場合、seals_utf8 は true に戻りますが、それでもアクセントは削除されません。
私は何を間違っていますか?