Парсинг страницы на php

Anarchist
На сайте с 23.07.2008
Offline
185
2107

Приветствую всех посетителей темы и надеюсь на вашу помощь.

Затупил с одним моментом, связанным с парсингом страницы.

Суть в том, что из целой огромной страницы надо выдернуть всего один параметр, который прячется в параметре id.

То есть:


<input type="hidden" id="some_word1234567" value="Some value" />

Из всего этого надо вычленить эти самые 1234567, которые могут меняться от 1 и до разумных пределов типа integer.

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

seosniks
На сайте с 13.08.2007
Offline
389
#1

<input type="hidden" id="some_word1234567" value="Some value" />

  <?php


$text=<<<eoff
<input type="hidden" id="some_word1234567" value="Some value" />
eoff;
preg_match("/<input type=\"hidden\" id=\"(.*?)\" value=\"Some value\" \/>/is",$text,$ok);
echo $ok[1];

// если выбрать все значения то так
$text=<<<eoff

<input type="hidden" id="some_word1234561" value="Some value" />
<input type="hidden" id="some_word1234562" value="Some value" />
<input type="hidden" id="some_word10000" value="Some value" />
eoff;
preg_match_all("/<input type=\"hidden\" id=\"(.*?)\" value=\"Some value\" \/>/is",$text,$ok);
echo $ok[1][0];
echo $ok[1][1];


//или так

$text=<<<eoff

<input type="hidden" id="some_word1234561" value="Some value" />
<input type="hidden" id="some_word1234562" value="Some value" />
<input type="hidden" id="some_word10000" value="Some value" />
eoff;
preg_match_all("/<input type=\"hidden\" id=\"(.*?)\" value=\"Some value\" \/>/is",$text,$ok);
for($i=0;$i<count($ok[1]);$i++) {
echo $ok[1][$i].'<br />';
}
?>

как то так

[Удален]
#2

вам в помощь

http://simplehtmldom.sourceforge.net/manual.htm

я им пользуюсь

4arger
На сайте с 17.12.2008
Offline
95
#3


$str = '<input type="hidden" id="some_word1234567" value="Some value" />';
preg_match('/id="some_word(.*)"/U', $str, $matches);
echo $matches[1];
_0
На сайте с 12.07.2010
Offline
3
#4


/<input type=\"hidden\" id=\".*?(\d+)" value=\"Some value\" \/>/is
Str01tel
На сайте с 27.12.2009
Offline
26
#5
preg_match('/<input\s+type="hidden"\s+id="[^"\d]+(\d+)"\s+value="[^"]+" \/>/is', $data, $values);
print_r($values);

универсальный вариант )

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6
Str01tel:
универсальный вариант )

Ну по сути можно и сократить:

preg_match('@id="[^"\d]+(\d+)" value@smi', $varz, $ok);

:)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Anarchist
На сайте с 23.07.2008
Offline
185
#7

"универсальный вариант" вроде как работает, но выводит в виде

Array ( [0] => [1] => 123456 )

Можно как-нибудь ограничиться одними лишь циферками? :)

Str01tel
На сайте с 27.12.2009
Offline
26
#8
LEOnidUKG:
Ну по сути можно и сократить:
preg_match('@id="[^"\d]+(\d+)" value@smi', $varz, $ok);

:)

согласен :)

не сокращал чтобы ТС хоть немного понял суть )

Можно как-нибудь ограничиться одними лишь циферками?

Str01tel добавил 17.10.2010 в 22:30

echo $values[1];

вместо print($values);

Anarchist
На сайте с 23.07.2008
Offline
185
#9

Пардон. Туплю :D

Вопрос закрыт :)

UPD:

Str01tel:
не сокращал чтобы ТС хоть немного понял суть )

да, спасибо. У меня сегодня великий вечер тупости.

Но благодаря вам он завершится вполне результативно :)

LEOnidUKG, к сожалению, не могу плюсануть. Говорят "плюсани кому-нить другому, лошара". Поэтому благодарность примите просто на словах. Спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий