gpt4 book ai didi

php - json_encode 给出递归错误

转载 作者:行者123 更新时间:2023-12-02 22:36:48 27 4
gpt4 key购买 nike

Warning:  json_encode(): recursion detected in [Directory] 

这个错误是什么,我似乎无法解决这个问题。它针对每个遇到的错误 500 生成一个 BIG BIG 日志。大小为 133,000,000 字节。它正在向日志发送垃圾邮件,直到内存达到最大。

<?php
include('simple_html_dom.php');

if(isset($_REQUEST['type']) && $_REQUEST['type'] = "getmoredetails"){
retrievemore($_REQUEST['htmlsource']);
}

function retrievemore($htmlcode){
$retrievetitle = retrievechTitle($htmlcode);
$retrievermb = retrievechRMB($htmlcode);
echo json_encode(array("error"=>0,"rmb"=>$retrievermb,"title"=>$retrievetitle));
}
function retrievechTitle($htmlcode){
$html = str_get_html($htmlcode);
$title = $html->find('div[class=tb-detail-hd]h3');
return $title[0];
}
function retrievechRMB($htmlcode){
$html = str_get_html($htmlcode);
$rmb = $html->find('[class=tb-rmb-num]');
return $rmb[0];
}

?>

我正在尝试从 HTML 文件中提取数据,其他提取工作正常,但上述提取除外,但存在很多问题。我什至将这组代码专门分离到一个 PHP 文件中进行处理并解决相同的问题。

有什么想法吗?我在主页上使用具有多种功能的 jQuery Ajax $.ajax({
我是 Ajax 新手,在一个页面中拥有多个 Ajax 可以吗?

最佳答案

问题显然在于您尝试对不适合它的内容调用 json_encode:

echo json_encode(array("error"=>0,"rmb"=>$retrievermb,"title"=>$retrievetitle));

我们可能会问,$retrievetitle 是什么?它是什么样的值(value)?好吧,我们在函数定义中找到了它:

$html = str_get_html($htmlcode);
$title = $html->find('div[class=tb-detail-hd]h3');
return $title[0];

很明显它是某种物体。我不熟悉 simple_html_dom 库,但大概它是属于该库并代表 HTML 元素的对象。也许它是一个原生的 DOMElement 对象;我不知道。

然而,清楚的是它是某种递归结构。也就是说,在某种意义上它包含着自己。这在 PHP 中是完全可能的,但不可能用 JSON 字符串表示。例如,在 PHP 中:

class Foo {
public $self;

public function __construct() {
$this->self = $this;
}
}
$foo = new Foo;

$foo->self$foo 是同一对象。事实上,你可以这样做 $foo->self->self->self 并且它会工作得很好。这是一个非常简单的递归结构。你的可能有点复杂,但原则上并没有什么不同。这无法用 JSON 表示。 json_encode遇到递归会出错。

我想您可能想存储标题的文本内容,而不是标题元素本身。简要阅读API documentation for the library ,看来您想要 plaintext 属性。我不太确定这是如何工作的(我们可以说,APi 是稀疏的),但我的猜测如下:

return $title[0]->plaintext;

但这只是一个有根据的猜测。

关于php - json_encode 给出递归错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235683/

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