PHP - извлечение нескольких данных из дочерних массивов HTML

0

У меня есть этот массив с именем $ topPaid:

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", "title" и текст в "small", чтобы показать их в таблице с помощью этого кода:

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,

Теги:
arrays

2 ответа

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);
        }
    }
}
0

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

$xml = simplexml_load_string($key);

должно быть:

$xml = simplexml_load_string($value);

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

  • 0
    По-прежнему получаю «Вызов функции-члена xpath () для необъекта».
  • 0
    Функция simplexml_load_string возвращает FALSE при simplexml_load_string . Можете ли вы проверить свой ввод ( $value )?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню