PHP для каждого цикла, parse_str получает "Примечание: неопределенный индекс: заголовок" - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть следующий код PHP:

<?php
$file = "Links.txt";
$parts = new SplFileObject($file); // this is your array of words

foreach($parts as $word) {
    $content = file_get_contents($word);
    parse_str($content, $ytarr);
    echo $ytarr['title'];
    unset($content);
}
?>

Обратите внимание:

  • Файл Links.txt содержит несколько внешних URL-адресов в каждой строкетолько один URL.Пример:

www.External-URL-number-ONE.com

www.External-URL-number-TWO.com

www.External-URL-number-THREE.com

  • Каждый из этих URL имеет элемент title в переменной $ content (после заполнения его значением «file_get_contents ($ word);»).
  • В целях устранения неполадок я протестировал каждый URL-адрес, добавив его в сингл "links.txt". Результат был для каждого URL-адреса успешным. Проблема возникает, если я добавляю несколько URL-адресов. В этом случае поведениеis:

Сообщение об ошибке и результат:

Примечание: Неопределенный индекс: заголовок в C: \ xampp \ htdocs \ PHPexample \ index.phpв строке 13

Отображение заголовка "www.External-URL-number-THREE.com"

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

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Содержимое переменной $content:

Array(

[reason] => Invalid parameters.

[status] => fail

[errorcode] => 2

)

Array (

[ISD] => 928398

[enable] => 1

[list] => 39/9339/30

[AMP] => 

[host] =>     

[title] => This_Is_the_Title_Three

[token] => 1

)

ОБНОВЛЕНИЕ

Я использовал isset () для проверки массива перед обращением к нему.И только последний для каждого цикла имеет индекс.

1 Ответ

0 голосов
/ 30 ноября 2018

Читать файл и читать построчно

<?PHP 
$file = "Links.txt";
$handle = @fopen($file, "r");

if ($handle) {
    // Read line by line
    while (($word = fgets($handle)) !== false) {
        $content = file_get_contents($word);

        // parse_str($content, $ytarr);  // parse_str don't work in this case
        //echo @$ytarr['title'];
        //unset($content);

        echo getDataTag($content, 'title');
    }
    fclose($handle);
}


//This is a dirty solution
function getDataTag($str, $tag){
    $str = str_replace('+',' ',$str);
    $data = explode(($tag.'='),$str);
    $data = explode('&',$data[1]);
    return $data[0];
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...