gpt4 book ai didi

php - DOMDocument::loadHTML():作为输入提供的空字符串

转载 作者:行者123 更新时间:2023-12-03 09:12:52 24 4
gpt4 key购买 nike

我搜索了无数页面,试图找到真正有效的答案。我已经尝试过库文件来专门处理警告和错误处理,但即使我抑制所有警告和错误,这最后一个警告仍然显示:

Warning: DOMDocument::loadHTML(): Empty string supplied as input

我的 php 处理如下。只要用户输入实际的 url,该代码就可以完美运行,但是当用户输入的数据不是 url 时,就会显示上面的警告。

if (isset($_GET[article_url])){
$title = 'contact us';
$str = @file_get_contents($_GET[article_url]);
$test1 = str_word_count(strip_tags(strtolower($str)));
if($test1 === FALSE) { $test = '0'; }
if ($test1 > '550') {
echo '<div><i class="fa fa-check-square-o" style="color:green"></i> This article has '.$test1.' words.';
} else {
echo '<div><i class="fa fa-times-circle-o" style="color:red"></i> This article has '.$test1.' words. You are required to have a minimum of 500 words.</div>';
}

$document = new DOMDocument();
$libxml_previous_state = libxml_use_internal_errors(true);
$document->loadHTML($str);
libxml_use_internal_errors($libxml_previous_state);

$tags = array ('h1', 'h2');
$texts = array ();

foreach($tags as $tag)
{
$elementList = $document->getElementsByTagName($tag);
foreach($elementList as $element)
{
$texts[$element->tagName] = strtolower($element->textContent);
}
}

if(in_array(strtolower($title),$texts)) {
echo '<div><i class="fa fa-check-square-o" style="color:green"></i> This article used the correct title tag.</div>';
} else {
echo "no";
}
}

如何抑制此警告?

看来建议似乎是停止抑制警告,而是修复它们,所以我在停止抑制警告时列出了所有警告

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity
Warning: DOMDocument::loadHTML(): htmlParseStartTag: misplaced <body> tag in Entity
Warning: DOMDocument::loadHTML(): Tag header invalid in Entity
Warning: DOMDocument::loadHTML(): Tag section invalid in Entity
Warning: DOMDocument::loadHTML(): error parsing attribute name in Entity
Warning: DOMDocument::loadHTML(): Tag footer invalid in Entity
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity
DOMDocument::loadHTML(): Unexpected end tag : strong in Entity

请记住,我正在扫描用户输入的 url,因此我无法控制正在测试的页面的格式 - 这意味着我无法修复他们的代码。

如果不抑制警告我该怎么办?

最佳答案

好吧@Bruce..我现在明白这个问题了。您要做的是测试 file_get_contents()

的值
<?php
error_reporting(-1);
ini_set("display_errors", 1);

$article_url = 'http://google.com';
if (isset($article_url)){
$title = 'contact us';
$str = @file_get_contents($article_url);
// return an error
if ($str === FALSE) {
echo 'problem getting url';
return false;
}

// Continue
$test1 = str_word_count(strip_tags(strtolower($str)));
if ($test1 === FALSE) $test = '0';

if ($test1 > '550') {
echo '<div><i class="fa fa-check-square-o" style="color:green"></i> This article has ' . $test1 . ' words.';
} else {
echo '<div><i class="fa fa-times-circle-o" style="color:red"></i> This article has ' . $test1 . ' words. You are required to have a minimum of 500 words.</div>';
}

$document = new DOMDocument();
$libxml_previous_state = libxml_use_internal_errors(true);
$document->loadHTML($str);
libxml_use_internal_errors($libxml_previous_state);

$tags = array ('h1', 'h2');
$texts = array ();

foreach($tags as $tag) {
$elementList = $document->getElementsByTagName($tag);
foreach($elementList as $element) {
$texts[$element->tagName] = strtolower($element->textContent);
}
}

if (in_array(strtolower($title),$texts)) {
echo '<div><i class="fa fa-check-square-o" style="color:green"></i> This article used the correct title tag.</div>';
} else {
echo "no";
}
}
?>

所以 if ($str === FALSE) {//return an error } 并且不要让脚本继续执行。你可以像我一样返回 false 或者只是做一个 if/else。

关于php - DOMDocument::loadHTML():作为输入提供的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40295681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com