研究员我有以下字符串:
<meta charset="UTF-8">
那也可以
通过html字符串,我想提取UTF-8。我尝试了以下代码:
preg_match_all('/^(<\s*meta\s*) charset=[^"]\s*($>)*/ix', $contents, $matches);
但不知何故不起作用,我不知道为什么。
答案 0 :(得分:0)
preg_match_all('/^<meta\s[^>]*charset=["\']([^>]+)["\'])/i', $contents, $matches);
charset=[^"]\s*($>)*
你有几个问题
[^"]
=不是“
\s*
=零个或多个空格(这没关系,但不必要)
($>)*
=不确定你的意图是什么。 $
锚定到字符串的末尾...所以你试图匹配/捕获零或更多(字符串结尾后的“&gt;”)...(它总是为零)
答案 1 :(得分:0)
对于此类情况,使用DOMDocument
类将更合适,更准确:
$html_string = '<meta charset="UTF-8">';
$doc = new \DOMDocument();
$doc->loadHTML($html_string);
$charset = $doc->childNodes->item(1)->getElementsByTagName("meta")->item(0)->getAttribute("charset");
print_r($charset); // "UTF-8"
答案 2 :(得分:0)
Finnaly我开始喘着粗气,从HTTP标头中获取编码