Как устранить ошибку «Неустранимая ошибка: вызов функции-члена str_get_html () для необъекта»?

Я делаю функцию для загрузки почтовых данных в моей базе данных. Вот мой код:

include('simple_html_dom.php');
$html = new simple_html_dom();
global $html;
function getArraySubject($stream,$subject){

$array = imap_search($stream, $subject);
return $array ;
}
// $domain 0 = any domeain from which we are receiving mails
//$case = subject number for ex :- Query, Potential.....
function getDataFromHTML($subjectArray, $domain = 0, $case = 1)
{
$completeArray = array();
if ($domain == 0 && $case == 1) {
rsort($subjectArray);

foreach($subjectArray as $email_id){

$body = imap_qprint(imap_body($stream,$email_id));
$my_file = 'mail-data.txt';
file_put_contents($my_file, $body);
$html = file_get_contents($my_file, true);
$htmlData = $html->str_get_html($body);
$tds = $htmlData->find('table',3)->find('td');
$num = null;
$i = 0 ;
foreach($tds as $td){
$completeArray['magicbricks']['case1'][$i] = $td->innertext;
$i++;
}
}
}
return $completeArray;
}

Я получаю сообщение об ошибке «Неустранимая ошибка: вызов функции-члена str_get_html () для необъекта в строке № 25».

Как решить эту проблему? пожалуйста помоги.

И это мой второй файл, где я вызываю вышеупомянутую функцию.

error_reporting(E_ALL);
ini_set('display_errors', 1);
include('functions.php');
// Configure your imap mailboxes
$mailboxes = array(
array(
'label'     => 'Label',
'mailbox'   => '{imap.gmail.com:993/imap/ssl}INBOX',
'username'  => '[email protected]',
'password'  => 'abc246'
)
);

foreach ($mailboxes as $current_mailbox) {

// Open an IMAP stream to our mailbox
$stream = @imap_open($current_mailbox['mailbox'], $current_mailbox['username'],      $current_mailbox['password']);

if (!$stream) {
?>
<p>Could not connect to: <?php echo $current_mailbox['label']?>. Error: <?php echo imap_last_error()?></p>
<?php
} else {
$sub1 = 'SUBJECT "Query" FROM "magicbricks.com"';$array1 = getArraySubject($stream,$sub1);

print_r($array1);

if (!count($array1)){
?>
<p>No e-mails found.</p>
<?php
} else {

$result = getDataFromHTML($array1, $domain = 0, $case = 1);

print_r($result);

}
}

// Close our imap stream.
imap_close($stream);

} // end foreach

-1

Решение

Более вероятный $html в этом контексте строка, поэтому вы не можете присоединить к ней никакой метод:

$html = file_get_contents($my_file, true); // this is not an instance of simple-html-dom object
$htmlData = $html->str_get_html($body);
^

Удалить это:

$htmlData = str_get_html($body); // now this create a simple-html-dom object
2

Другие решения

include('simple_html_dom.php');
$html = new simple_html_dom();
global $html; //This is unnecessary
function getArraySubject($stream,$subject){

$array = imap_search($stream, $subject);
return $array ;
}
// $domain 0 = any domeain from which we are receiving mails
//$case = subject number for ex :- Query, Potential.....
function getDataFromHTML($subjectArray, $domain = 0, $case = 1)
{

//Add this
global $html;$completeArray = array();
if ($domain == 0 && $case == 1) {
rsort($subjectArray);

foreach($subjectArray as $email_id){

$body = imap_qprint(imap_body($stream,$email_id));
$my_file = 'mail-data.txt';
file_put_contents($my_file, $body);
$fileData = file_get_contents($my_file, true); //renamed this
$htmlData = $html->str_get_html($body);
$tds = $htmlData->find('table',3)->find('td');
$num = null;
$i = 0 ;
foreach($tds as $td){
$completeArray['magicbricks']['case1'][$i] = $td->innertext;
$i++;
}
}
}
return $completeArray;
}
0

По вопросам рекламы [email protected]