2015-01-28 2 views
0

Я получил этот массив с именем $ topPaid:PHP - Извлечение нескольких данных детей массива HTML

Array 
(
    [0] => <li> 
     <a class="livelink" href="#%21/content/5664"> 
      <span title="Relief Terrain Pack v3.2" class="title">Relief Terrain Pack v3.2</span> 
      <br><small> 
        Editor Extensions/Terrain 
      </small> 
      <br></a> 
    </li> 
    [1] => <li> 
     <a class="livelink" href="#%21/content/368"> 
      <span title="Playmaker" class="title">Playmaker</span> 
      <br><small> 
        Editor Extensions/Visual Scripting 
      </small> 
      <br></a> 
    </li> 
    [2] => <li> 
     <a class="livelink" href="#%21/content/4243"> 
      <span title="Amplify Motion" class="title">Amplify Motion</span> 
      <br><small> 
        Scripting/Effects 
      </small> 
      <br></a> 
    </li> 
    [3] => <li> 
     <a class="livelink" href="#%21/content/16899"> 
      <span title="Skele: Character Animation Tools" class="title">Skele: Character Animation Tools</span> 
      <br><small> 
        Editor Extensions/Modeling 
      </small> 
      <br></a> 
    </li> 
    [4] => <li> 
     <a class="livelink" href="#%21/content/19245"> 
      <span title="SnazzyGrid" class="title">SnazzyGrid</span> 
      <br><small> 
        Editor Extensions/Utilities 
      </small> 
      <br></a> 
    </li> 
    [5] => <li> 
     <a class="livelink" href="#%21/content/19352"> 
      <span title="Zones, Fields, and Shields" class="title">Zones, Fields, and Shields</span> 
      <br><small> 
        Shaders 
      </small> 
      <br></a> 
    </li> 
    [6] => <li> 
     <a class="livelink" href="#%21/content/18920"> 
      <span title="PlayerPrefs Elite" class="title">PlayerPrefs Elite</span> 
      <br><small> 
        Scripting/Integration 
      </small> 
      <br></a> 
    </li> 
    [7] => <li> 
     <a class="livelink" href="#%21/content/18358"> 
      <span title="Bolt" class="title">Bolt</span> 
      <br><small> 
        Scripting/Network 
      </small> 
      <br></a> 
    </li> 
    [8] => <li> 
     <a class="livelink" href="#%21/content/13198"> 
      <span title="BIG Environment Pack Vol.3" class="title">BIG Environment Pack Vol.3</span> 
      <br><small> 
        3D Models/Environments 
      </small> 
      <br></a> 
    </li> 
    [9] => <li> 
     <a class="livelink" href="#%21/content/23930"> 
      <span title="VertExmotion" class="title">VertExmotion</span> 
      <br><small> 
        Editor Extensions/Animation 
      </small> 
      <br></a> 
    </li> 
) 

Теперь я пытаюсь принести вне «HREF» ссылка, «Заголовок» и текст «небольшой ", чтобы показать их в таблицу с этим кодом:

foreach($topPaid as $key => $value) 
{ 
    $xml = simplexml_load_string($key); 
    $list = $xml->xpath("//@href"); 
    $preparedUrls = array(); 
    foreach($list as $item) { 
     $item = parse_url($item); 
     $preparedUrls[] = $item['scheme'] . '://' . $item['host'] . '/'; 
    } 
    print_r($preparedUrls); 
} 

Но я всегда получаю ошибку, когда я пытаюсь получить доступ к объекту, не являющемуся членом. Должен ли я разбирать каждый элемент массива по строке и анализировать его содержимое линии или лучший метод для получения информации?

Greetz,

ответ

0

Я не пробовал свой код, но мне кажется, что ошибка в строке:

$xml = simplexml_load_string($key); 

должно быть:

$xml = simplexml_load_string($value); 

и текст, который вы передаете в функция недействительна. XML, <br> должен быть <br />.

+0

все еще получаю «вызов функции члена XPath() на не-объект.». – Kia

+0

Функция 'simplexml_load_string' возвращает' FALSE' при ошибке. Можете ли вы проверить свой ввод ('$ value')? – stjepano

+0


теги должны быть
в действительном XML. – stjepano

0

решаемые его чеком линии:

foreach($topPaid as $key => $value) 
{ 
    foreach(preg_split("/((\r?\n)|(\r\n?))/", $value) as $line) 
    { 
     $difline = strip_tags($line); 
     if(strpos($line, '<a class="livelink" href="#%21/') !== false) 
     { 
      $link = explode('href="', $line); 
      $link = substr($link[1], 0, -2); 
      // https://www.assetstore.unity3d.com/en/#!/content/4243 
      $link = str_replace('#%21', 'https://www.assetstore.unity3d.com/en/#!', $link); 
      //print_r($link); 
     } 
     else if(strpos($line, '<span title') !== false) 
     { 
      $title = explode('title=', $line); 
      $title = explode('class=', $title[1]); 
      $title = $title[0]; 
      //print_r($title); 
     } 
     else if($difline == $line) 
     { 
      $type = $line; 
      //print_r($type); 
     } 
    } 
} 
Смежные вопросы