2015-06-30 49 views
0

我想从许多HTML文件中读取并显示标题(包含在h1标记中)的内容。这些文件都在同一个文件夹中。阅读和编码html

这是HTML文件的样子:

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'> 
<html> 
<head> 
    <title>A title</title> 
    <style type='text/css'> 
    ... Styles here ... 
    </style> 
</head> 
<body> 
    <h1>&Ecirc;tre aidant</h1> 
    <p>En g&eacute;n&eacute;ral, les aidants doivent &eacute;quilibrer...</p> 
    ... more tags ... 
</body> 

我试图用这个PHP脚本来显示从H1标签的内容:

<?php 
foreach (glob("test/*.html") as $file) { 
    $file_handle = fopen($file, "r"); 

    $doc = new DOMDocument(); 
    $doc->loadHTMLfile($file); 

    $title = $doc->getElementsByTagName('h1'); 
    if ($title && 0<$title->length) { 
     $title = $title->item(0); 
     $content = $doc->savehtml($title); 
     echo $content; 
    } 
    fclose($file_handle); 
} 
?> 

但输出包含错误的字符。对于示例文件,输出为:

Être aidant 

如何实现此输出?

Être aidant 
+0

文件是否保存为UTF8?您是否尝试将字符串转换为https://secure.php.net/manual/en/function.fopen.php#104325 – x29a

回答

1

你应该用你的HTML文档的<head>一个字符集。

<meta charset="utf-8"> 
+0

你的意思是在输出文件中? – user3218711

+0

是的,对于你所有的'.html'文件,你应该有这个声明。尝试一个文件,看看它是否有效。 –

+0

好吧,我在输出和输出之前添加了'',我希望帮助! – user3218711

0

你需要使用UTF-8编码 变化echo $content to echo utf8_encode($content);

+0

感谢您的答案,但输出成为'Êtreaidant' – user3218711

+0

如果您删除utf8_encode比输出将成为助理。 您的预期输出是什么。 – rocky