-1

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 に戻りますが、それでもアクセントは削除されません。

私は何を間違っていますか?

4

1 に答える 1