Как получить страну, ссылку, текст из всех тегов привязки в массиве, используя php - PullRequest
0 голосов
/ 20 июня 2020

Как получить страну, ссылку, текст из всех якорных тегов в массиве, используя PHP

$str ='
<div class="main"> 
<span country="PK"></span><a class="link" href="linkOne">1</a> 
<span country="US"></span><a class="link" href="linkTwo">2</a> 
<span country="UA"></span><a class="link" href="LinkThree">3</a> 
</div>';
function getStr($str,$start,$end){
    $str = explode($start,$str,2);
    $str = explode($end,$str[1],2);
    return $str[0];
}
$html =  getStr($str,'<div class="main">','</div>');
preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)\1[^>]*>/i', $html, $result);

if (!empty($result)) {
   echo $result['href'][0];
}

Нужно вот так:

/* Array */
$links[0] = "PK", "linkOne", "1";
$links[1] = "US", "linkTwo", "2";
/* and so on ... */

1 Ответ

0 голосов
/ 20 июня 2020

Я думаю, вы ищете на стороне сервера JQuery, который на самом деле существует!

checkout phpQuery

Пример использования

In ваш конкретный c случай, его можно использовать как:

<?php
include 'phpQuery.php';

$str = '<span country="US"></span><a href="url-here">some text</a>';

$doc = phpQuery::newDocument($str);

// Note that we can use CSS style selector,
// instead of just "span".
$links = array();
foreach($doc['span'] as $item)
{
  $node = pq($item);
  $sibling = $node->next();
  if ( $sibling->is('a') ) {
    $links[] = array(
      $node->attr('country'),
      $sibling->attr('href'),
      $sibling->text(),
    );
  }
}

// Display result:
print_r($links);

Просто получите phpQuery-0.9.5.386-onefile.zip , извлеките его и переименуйте в phpQuery.php, его единый файл !!

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