我在我的网站上有一个小元素,用来显示当前页面标记的有效性。目前,它被静态地设置为"HTML5有效“,因为我经常检查它是否实际上是HTML5有效的。如果不是,那么我会修复所有问题,使其保持HTML5有效。
不过,我希望这个元素是动态的。那么,有没有办法用当前的URL ping W3C验证服务,接收结果,然后将结果插入到PHP函数中呢?W3C是否为此提供了应用程序接口,或者您是否必须手动编写代码?
发布于 2012-07-16 01:51:28
据我所知,他们没有API。
因此,我的建议是:
使用页面的URL (使用file_get_contents()或curl)向结果页面(http://validator.w3.org/check?uri=)发送请求(GET)。解析响应以获取有效消息(DOMDocument或简单字符串搜索)。
注意:这是一个脆弱的解决方案。如果W3C方面发生了任何变化,都会受到影响。然而,它将会工作,并且这个工具已经可以使用几年了。
另外,如果你真的想把它放在你的实时站点上,我强烈建议你使用某种缓存。对每个页面请求执行此操作的代价很高。老实说,这应该是一个开发工具。一些正在运行并向您报告错误的程序。保持徽章静止不动。
发布于 2015-08-06 01:15:50
这里是W3C HTML Checker (也称为验证器)的维护者。实际上,检查器确实公开了一个允许您执行以下操作的API,例如:
https://validator.w3.org/nu/?doc=https%3A%2F%2Fgoogle.com%2F&out=json
…它以JSON的形式返回结果。还有一个POST接口。
您可以在此处找到更多详细信息:
发布于 2018-08-21 09:12:46
下面是一个在W3C中实现HTML来验证HTML的示例:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://validator.w3.org/nu/?out=json",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '<... your html text to validate ...>',
CURLOPT_HTTPHEADER => array(
"User-Agent: Any User Agent",
"Cache-Control: no-cache",
"Content-type: text/html",
"charset: utf-8"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
//handle error here
die('sorry etc...');
}
$resJson = json_decode($response, true);$resJson将如下所示:
{
"messages": [
{
"type": "error",
"lastLine": 13,
"lastColumn": 110,
"firstColumn": 5,
"message": "Attribute “el” not allowed on element “link” at this point.",
"extract": "css\">\n <link el=\"stylesheet\" href=\"../css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.min.css\">\n <",
"hiliteStart": 10,
"hiliteLength": 106
},
{
"type": "info",
"lastLine": 294,
"lastColumn": 30,
"firstColumn": 9,
"subType": "warning",
"message": "Empty heading.",
"extract": ">\n <h1 id=\"promo_codigo\">\n ",
"hiliteStart": 10,
"hiliteLength": 22
},....有关更多详细信息,请查看https://github.com/validator/validator/wiki/Service-»-Input-»-POST-body。
https://stackoverflow.com/questions/11494203
复制相似问题