我正在使用file_get_contents从weblink中提取一些文本,我对文本没有影响,我所谈论的位已经在我获取内容的weblink的源代码中格式错误, 看起来......像这样:
/$%§&fdsgfkgfd � fdsfdsfs � � -->
<h1>m�lll</h1>
<h1>m�lll</h1>
<h1>m�lll</h1>
<h1>m�lll</h1>
<h1>m�lll</h1>
<h1>m�lll</h1>
或
<<<!-- � födns
我的php文件并不意味着“成为”一个html文件所以它只是一个字符串即时处理,
我搜索了互联网,但很难用这个图标
我想删除它们 因为没有必要, 我怎么能删除它们?
ps:我没有浏览浏览器,我在控制台中var_dump文本
解决方案:
我使用tthis函数首先将字符串转换为utf-8字符串
function convToUtf8($str)
{
if( mb_detect_encoding($str,"UTF-8, ISO-8859-1, GBK")!="UTF-8" )
{
return iconv("gbk","utf-8",$str);
}
else
{
return $str;
}
}
答案 0 :(得分:1)
您可以使用iconv()
$converted = iconv($input_encoding, $output_encoding . '//IGNORE', $original);
有两个缺点:
正如您在a user comment in the manual中所读到的那样,iconv()
有一个错误,因此'//IGNORE'
不适用于最新版本的iconv库。建议的解决方法是(此处为UTF-8):
ini_set('mbstring.substitute_character', 'none');
$text = mb_convert_encoding($text, 'UTF-8', 'UTF-8');
但是,尝试检测输入编码并将输入转换为输出编码要好得多。这导致:
function recode ($input, $output_encoding)
{
$input_encoding = mb_detect_encoding($input);
if ($input_encoding === false)
{
$old_substitute = mb_substitute_character();
mb_substitute_character('none');
$converted = mb_convert_encoding($input, $output_encoding, $output_encoding);
mb_substitute_character($old_substitute);
}
else
{
$converted = ($output_encoding !== $input_encoding)
? iconv($input_encoding, $output_encoding, $input)
: $input;
}
return $converted;
}