[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вытащить номер до текста.
Frost-56
Помогите с регуляркой preg_match.

Есть текст:

<a href="/board/show/100871/">Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.</a>


Надо вытащить номер объявления.

Делаю так:

preg_match('#<a href="/board/show/(.*)/">Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.</a>#isU', $content, $match);


Но на выходе получается вообще херня.

Буду благодарен за помощь.
Placido
На первый взгляд все должно работать. Номер будет в первой подгруппе:
echo $match[1];


----

Кстати, точки в регулярках нужно экранировать (хотя пример выше будет работать и так).
Frost-56
Так и проверяю, выкидывает очень много объявлений.
inpost
кодировка utf-8 ? Модификатор u ?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
Цитата (inpost @ 26.08.2013 - 17:00)
кодировка utf-8 ? Модификатор u ?

На сайте cp1251 кодировка.
inpost
Попробуй экранировать все спец.символы. Ну или так:
http://ua2.php.net/manual/en/function.preg-quote.php
Вроде должно работать. Или убери модификатор U, а напиши (.*?) , то есть отмена жадного только в данном месте.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
Убрал U, сделал (.*?) - результат тот же.

Экранировал спец. символы - результат тот же.

preg_match('#\<a href\="\/board\/show\/(.*?)\/"\>Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.\<\/a\>#is', $content, $match);


Даже не знаю в чем беда.
Winston
Frost-56
Все варианты которые ты здесь выложил, у меня работают.
Напиши echo $content, что там у тебя выводится?
Frost-56
Выводится сайт без картинок и css.

Для сведений, сайт: vgae.ru раздел /board/


Мой код полностью:


<?php
set_time_limit(0);


$url = 'http://vgae.ru/board/';
$content = file_get_contents($url);

preg_match('#\<a href\="\/board\/show\/(.*?)\/"\>Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.\<\/a\>#is', $content, $match);

echo $match[1];


echo $content;


?>
FatCat
Цитата (Frost-56 @ 26.08.2013 - 14:21)
Помогите с регуляркой

Не люблю регулярки. Медленно и ресурсоемко.
$txt = '<a href="/board/show/100871/">Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.</a>';
$txt = explode("/",$txt);
foreach($txt as $d)if($d == intval($d))$id = $d;


_____________
Бесплатному сыру в дырки не заглядывают...
alted
	$url = 'http://vgae.ru/board/';
$content = file_get_contents($url);
$content = iconv('cp1251', 'utf-8', $content);

preg_match_all('/<a href="\/board\/show\/([^\/]+)\/">.+<\/a>/isU', $content, $match);
print_r($match);
/*
Array
(
[0] => Array
(
[0] => <a href="/board/show/100831/"><img src="/2go/board/images/vip.png" alt="vip" titel="VIP объявление" align="absmiddle"/>  <b>Разыскивается корреспондент. Активный, ответственный, усердный работник. Работа в прекрасном микроклимате, достойная зарплата, официальное оформление.</b></a>
....
)
[1] => Array
(
[0] => 100831
...
)
)
*/


Вроде работает. Наверное, проблемы из-за кодировки были...
Игорь_Vasinsky
Цитата
([^\/]+)

Цитата
Вытащить номер до текста.


ищете цифровой номер номер - ищите цифры

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.