Я делаю функцию для загрузки почтовых данных в моей базе данных. Вот мой код:
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
Более вероятный $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
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;
}