我有一个简单的函数,它使用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's remove_accents function,但似乎永远不会传递第一个!preg_match条件。条件总是计算为true,只返回原始字符串。
但是,如果我复制粘贴带有重音符号的名称,对其进行硬编码,然后在其上运行remove_accents,一切正常。例如:
$name = 'Þýri';
echo remove_accents($name);
返回'THyri'。
我真的不明白,因为据我所知,curl_exec的结果是utf8,应该可以正常工作。
我已经尝试直接在cURL返回的结果上调用remove_accents(以确保我的拔出名称的方法没有弄乱任何东西),这也不起作用 - 重音仍然存在。
我也尝试删除!preg_match条件,在这种情况下,seem_utf8返回true,但仍然没有删除重音符。
我做错了什么?
答案 0 :(得分:0)
我认为你可以尝试一下htmlentities,该函数会将带有重音的名称转换为各自的html代码,你可以在这里阅读文档:http://php.net/manual/en/function.htmlentities.php
使用此功能将隐蔽例如:
$string = 'noè';
echo htmlentities($string);
这将输出:
noè
将被html读为
noè
否则,如果您只需要用正常字母替换重音,您可以使用str_replace函数,它将查找给定值并将其更改为目标值,这里是一个示例:
echo str_replace('è', 'e', $string);
将输出
noe
在这种情况下,您必须手动插入要替换的所有重音符。
UPDATED
在你的情况下你已经有你的口音的HTML代码,所以你可以解码它们然后用普通字母交换或存储它们的口音(可能,取决于你的数据库编码(UTF-8)应该允许你存储它们