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
Форумы портала PHP.SU :: Версия для печати :: Помогите получить ссылки
Форумы портала PHP.SU » PHP » Регулярные выражения » Помогите получить ссылки

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

1. Facecontrol - 09 Сентября, 2018 - 22:53:28 - перейти к сообщению
Есть такой код
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.  

В регулярках не силён. Помогите пожалуйста.
2. Строитель - 09 Сентября, 2018 - 23:07:10 - перейти к сообщению
Facecontrol пишет:
Вообщем мне нужно выдрать ссылки между <a href=" и " class="playerlink">
Спойлер (Отобразить)
3. Facecontrol - 09 Сентября, 2018 - 23:24:24 - перейти к сообщению
Строитель пишет:
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) и всякого хлама
4. Строитель - 09 Сентября, 2018 - 23:44:53 - перейти к сообщению
Facecontrol, а чем моё решение не устроило?
(Добавление)
Facecontrol пишет:
И сделать вывод чтоб небыло всяких там string(40)
- эти "всякие там" являются служебной информацией, которая выводится функцией var_dump(). Распечатывайте массив в цикле, и тогда вы не увидите служебной инфы.
5. Facecontrol - 09 Сентября, 2018 - 23:52:49 - перейти к сообщению
Строитель Подскажите пожалуйста как это сделать. Я не
знаю как.
6. Строитель - 09 Сентября, 2018 - 23:59:35 - перейти к сообщению
Facecontrol, для начала распечатайте ваш массив с помощью
Потом скопируйте полученный код сюда, что бы я мог сохранить ваш массив в переменную и написать на его основе код.
(Добавление)
И вы не ответили на мой вопрос.
7. Facecontrol - 10 Сентября, 2018 - 00:06:28 - перейти к сообщению
Строитель пишет:
var_export($r);
Я его не пробовал ещё
8. Строитель - 10 Сентября, 2018 - 00:09:10 - перейти к сообщению
Facecontrol пишет:
Я его не пробовал ещё
Я же вас не об этом спрашивал. Вам нужна помощь или нет? Если нужна - распечатайте массив так, как я описал в предыдущем посту.
9. Facecontrol - 10 Сентября, 2018 - 00:11:03 - перейти к сообщению
извиняюсь. Я просто не на тот пост ответил. уже засыпаю
Спойлер (Отобразить)
10. Строитель - 10 Сентября, 2018 - 00:14:48 - перейти к сообщению
Facecontrol
Спойлер (Отобразить)
11. Facecontrol - 10 Сентября, 2018 - 00:46:55 - перейти к сообщению
Строитель пишет:
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.  


Думаю что нужно всё поместить в массив а потом перебирать циклом, но как? Плюс количество значений может меняться, и они выводятся с повтором. тоесть
Спойлер (Отобразить)
12. Facecontrol - 10 Сентября, 2018 - 13:48:43 - перейти к сообщению
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];

Вроде получилось. Но теперь выдало всё в одну строку вроде.
Спойлер (Отобразить)
13. Строитель - 10 Сентября, 2018 - 14:23:13 - перейти к сообщению
Facecontrol, а посмотреть как было у меня в примере, не?
14. Facecontrol - 10 Сентября, 2018 - 14:58:58 - перейти к сообщению
Строитель пишет:
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($link);

(Добавление)
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($link);


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


и подобный блок только вместо
PHP:
скопировать код в буфер обмена
  1. <div class="first-team">

так
PHP:
скопировать код в буфер обмена
  1. <div class="second-team">



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

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


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

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

 

Powered by ExBB FM 1.0 RC1