Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите получить ссылки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Facecontrol
Отправлено: 09 Сентября, 2018 - 22:53:28
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Есть такой код
CODE (html):
скопировать код в буфер обмена
  1. <td class="player1"><a href="https://www.tennisbetsite.com/head-to-head/margot-yerolymos-vs-maryna-zanevska.html" class="playerlink"><span class="player winner"><abbr title="Марго Еролимос"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Margot Yerolymos</font></font></abbr></span></a><span class="country"><abbr title="FRA"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> FRA</font></font></abbr></span></td>

Мне нужно получить массив ссылок, но значение после https://www[dot]tennisbetsite[dot]com/head-to-head/ может меняться. Вообщем мне нужно выдрать ссылки между <a href=" и " class="playerlink">

Пытался так
PHP:
скопировать код в буфер обмена
  1. preg_match_all( '/<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">/is' , $site , $r );
  2.  

В регулярках не силён. Помогите пожалуйста.
 
 Top
Строитель Модератор
Отправлено: 09 Сентября, 2018 - 23:07:10
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
Вообщем мне нужно выдрать ссылки между <a href=" и " class="playerlink">
Спойлер (Отобразить)
 
 Top
Facecontrol
Отправлено: 09 Сентября, 2018 - 23:24:24
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol пишет:
Вообщем мне нужно выдрать ссылки между <a href=" и " class="playerlink">
Спойлер (Отобразить)



Я уже понял ошибку
надо было вместо модификатора / сделать #
PHP:
скопировать код в буфер обмена
  1. preg_match_all( '/<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">/is' , $site , $r );//было
  2. preg_match_all( '#<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">#is' , $site , $r );// стало
  3.  

(Добавление)
но теперь другая проблемма
сделал вывод вот так
PHP:
скопировать код в буфер обмена
  1. preg_match_all( '#<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">#is' , $site , $r );

А мне вывело в браузер
Спойлер (Отобразить)

Теперь мне нужно как-то это разбить. И сделать вывод чтоб небыло всяких там string(40) и всякого хлама

(Отредактировано автором: 09 Сентября, 2018 - 23:32:31)

 
 Top
Строитель Модератор
Отправлено: 09 Сентября, 2018 - 23:44:53
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol, а чем моё решение не устроило?
(Добавление)
Facecontrol пишет:
И сделать вывод чтоб небыло всяких там string(40)
- эти "всякие там" являются служебной информацией, которая выводится функцией var_dump(). Распечатывайте массив в цикле, и тогда вы не увидите служебной инфы.
 
 Top
Facecontrol
Отправлено: 09 Сентября, 2018 - 23:52:49
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель Подскажите пожалуйста как это сделать. Я не
знаю как.
 
 Top
Строитель Модератор
Отправлено: 09 Сентября, 2018 - 23:59:35
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol, для начала распечатайте ваш массив с помощью
Потом скопируйте полученный код сюда, что бы я мог сохранить ваш массив в переменную и написать на его основе код.
(Добавление)
И вы не ответили на мой вопрос.
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 00:06:28
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
var_export($r);
Я его не пробовал ещё
 
 Top
Строитель Модератор
Отправлено: 10 Сентября, 2018 - 00:09:10
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
Я его не пробовал ещё
Я же вас не об этом спрашивал. Вам нужна помощь или нет? Если нужна - распечатайте массив так, как я описал в предыдущем посту.
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 00:11:03
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




извиняюсь. Я просто не на тот пост ответил. уже засыпаю
Спойлер (Отобразить)

(Отредактировано автором: 10 Сентября, 2018 - 00:12:04)

 
 Top
Строитель Модератор
Отправлено: 10 Сентября, 2018 - 00:14:48
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol
Спойлер (Отобразить)
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 00:46:55
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol
Спойлер (Отобразить)



Спасибо получилось. Но теперь выдало вот так
Спойлер (Отобразить)


А я бы хотел чтоб каждый результат записался отдельно в переменную. Или опять их массивом выводить, или циклом перебрать?
Нужно например чтоб так
PHP:
скопировать код в буфер обмена
  1. var_dump($r[0][0]);//
  2. вывело margot-yerolymos-vs-maryna-zanevska.html
  3. var_dump($r[0][1]);//
  4. вывело margot-yerolymos-vs-unknown-player.html
  5.  


Думаю что нужно всё поместить в массив а потом перебирать циклом, но как? Плюс количество значений может меняться, и они выводятся с повтором. тоесть
Спойлер (Отобразить)
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 13:48:43
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Facecontrol пишет:
Строитель пишет:
Facecontrol
Спойлер (Отобразить)



Спасибо получилось. Но теперь выдало вот так
Спойлер (Отобразить)


А я бы хотел чтоб каждый результат записался отдельно в переменную. Или опять их массивом выводить, или циклом перебрать?
Нужно например чтоб так
PHP:
скопировать код в буфер обмена
  1. var_dump($r[0][0]);//
  2. вывело margot-yerolymos-vs-maryna-zanevska.html
  3. var_dump($r[0][1]);//
  4. вывело margot-yerolymos-vs-unknown-player.html
  5.  


Думаю что нужно всё поместить в массив а потом перебирать циклом, но как? Плюс количество значений может меняться, и они выводятся с повтором. тоесть
Спойлер (Отобразить)


Ну например как удалить повторения значений, и как их посчитать я понял. Сделал это так
PHP:
скопировать код в буфер обмена
  1. preg_match_all( '#<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">#is' , $site , $r );
  2. $res = array_unique($r[1]);
  3.  $c=count($res);

А вот как теперь их вывести чтоб например $r[1][0]; вывело одно значение $r[1][1]; вывело другое и так далее. Пробовал сделать так
PHP:
скопировать код в буфер обмена
  1. preg_match_all( '#<a href="https://www.tennisbetsite.com/head-to-head/(.*?)" class="playerlink">#is' , $site , $r );
  2. $res = array_unique($r[1]);
  3.  $c=count($res);
  4.  for ($x=0; $x<$c; $x++) echo $r[1][$x];

Вроде получилось. Но теперь выдало всё в одну строку вроде.
Спойлер (Отобразить)
 
 Top
Строитель Модератор
Отправлено: 10 Сентября, 2018 - 14:23:13
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol, а посмотреть как было у меня в примере, не?
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 14:58:58
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol, а посмотреть как было у меня в примере, не?

да вроде получилось так
PHP:
скопировать код в буфер обмена
  1.  foreach ($r[1] as $link) {
  2.     echo "$link<br>";
  3. }

Выдало
Спойлер (Отобразить)

А теперь хочу удалить повторения
PHP:
скопировать код в буфер обмена
  1.  foreach ($r[1] as $link) {
  2.          $res = array_unique($link);
  3.     echo "$res<br>";
  4. }

Выдало
Спойлер (Отобразить)

строка 33
(Добавление)
Facecontrol пишет:
Строитель пишет:
Facecontrol, а посмотреть как было у меня в примере, не?

да вроде получилось так
PHP:
скопировать код в буфер обмена
  1.  foreach ($r[1] as $link) {
  2.     echo "$link<br>";
  3. }

Выдало
Спойлер (Отобразить)

А теперь хочу удалить повторения
PHP:
скопировать код в буфер обмена
  1.  foreach ($r[1] as $link) {
  2.          $res = array_unique($link);
  3.     echo "$res<br>";
  4. }

Выдало
Спойлер (Отобразить)

строка 33

Всё я понял в чём ошибка. Нужно было сделать так
PHP:
скопировать код в буфер обмена
  1. $res = array_unique($r[1]);
  2.  foreach ($res as $link) {
  3.     echo "$link<br>";
  4. }
  5.  
 
 Top
Facecontrol
Отправлено: 10 Сентября, 2018 - 20:10:00
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Так с тем вроде разобрался. Думал дальше легче пойдёт. Неугадал Нахмурился
Вообщем теперь нужно составить какую-то сложную регулярку. Есть два блока
Спойлер (Отобразить)


и подобный блок только вместо
так


вообщем нужно найти в каждом блоке три самые первые ссылки такого вида
Спойлер (Отобразить)

но при этом нужно проверить есть ли слово "ret.- " в подобном коде
Спойлер (Отобразить)


а конкретнее здесь может стоять например так <abbr title="6-4 6-7 (8) 7-5 ret.- ">
и если оно присутствует то эту ссылку нужно пропустить, и взять следующую которая находится в подобном коде
Спойлер (Отобразить)

Но важное условия что нужно выбрать три первые ссылки как с одного так и со второго блока.
Помогите пожалуйста с этим разобраться, и я думаю дальше всё получится что хочу я...

(Отредактировано автором: 10 Сентября, 2018 - 20:14:51)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB