我正试图通过以下php脚本加载此网站的元描述(具有德语字符):
$page_content = file_get_contents($uri);
$dom_obj = new \DOMDocument();
$dom_obj->loadHTML(mb_convert_encoding($page_content, 'HTML-ENTITIES', 'UTF-8'));
然而,在尝试将其写入mysql数据库时,laravel说,它在尝试将其写入数据库时遇到了问题:不正确的字符串值“\xc3”(这是德语字符)
当我简单地执行以下操作时,向db写入数据是可行的。但字符显示不正确(ã¼ 而不是ü)
$dom_obj->loadHTML($page_content)
这个问题只发生在这个网站到目前为止,其他我尝试用相同的字符做工作。你能想出一个可能的原因和解决办法吗?谢谢您!
编辑:
当我使用phps“utf8\u decode”对通过$dom\u obj获得的元描述进行解码而不使用mb\u convert\u编码时,它工作得很好。当我这样做时,以前工作过的所有其他站点都会导致错误(例如:不正确的字符串值:'\xe4t')
1条答案
按热度按时间zzwlnbp81#
我发现了错误。我用substr来缩短描述。显然substr切断了其中一个特殊的字符,这就是为什么它不起作用。
这是一个解决方法: