我有一个简单的函数,它使用 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 条件。条件总是计算为真,原始字符串只会被返回。
但是,如果我复制粘贴一个带有重音符号的名称,对其进行硬编码,然后在其上运行 remove_accents,一切正常。例如:
$name = 'Þýri';
echo remove_accents($name);
返回'THyri'。
我不太明白,因为据我所知,curl_exec 的结果是 utf8,应该可以正常工作。
我尝试直接在 cURL 返回的结果上调用 remove_accents (以确保我提取名称的方法没有搞砸任何事情),但这也不起作用 - 重音仍然存在。
我也尝试删除 !preg_match 条件,在这种情况下,似乎_utf8 恢复为真,但重音仍然没有被删除。
我究竟做错了什么?