Frost-56
26.08.2013 - 15:21
Помогите с регуляркой preg_match.
Есть текст:
<a href="/board/show/100871/">Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.</a>
Надо вытащить номер объявления.
Делаю так:
preg_match('#<a href="/board/show/(.*)/">Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.</a>#isU', $content, $match);
Но на выходе получается вообще херня.
Буду благодарен за помощь.
Placido
26.08.2013 - 15:37
На первый взгляд все должно работать. Номер будет в первой подгруппе:
echo $match[1];
----
Кстати, точки в регулярках нужно экранировать (хотя пример выше будет работать и так).
Frost-56
26.08.2013 - 15:54
Так и проверяю, выкидывает очень много объявлений.
inpost
26.08.2013 - 16:00
кодировка utf-8 ? Модификатор u ?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
26.08.2013 - 16:01
Цитата (inpost @ 26.08.2013 - 17:00) |
кодировка utf-8 ? Модификатор u ? |
На сайте cp1251 кодировка.
inpost
26.08.2013 - 16:38
Попробуй экранировать все спец.символы. Ну или так:
http://ua2.php.net/manual/en/function.preg-quote.phpВроде должно работать. Или убери модификатор U, а напиши (.*?) , то есть отмена жадного только в данном месте.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
27.08.2013 - 01:07
Убрал U, сделал (.*?) - результат тот же.
Экранировал спец. символы - результат тот же.
preg_match('#\<a href\="\/board\/show\/(.*?)\/"\>Ремонт компьютеров и ноутбуков. Настройка Wi-Fi и интернета. А так же многое другое.\<\/a\>#is', $content, $match);
Даже не знаю в чем беда.
Winston
27.08.2013 - 13:34
Frost-56
Все варианты которые ты здесь выложил, у меня работают.
Напиши echo $content, что там у тебя выводится?
Frost-56
27.08.2013 - 13:46
Выводится сайт без картинок и 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
27.08.2013 - 15:16
Цитата (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;
_____________
Бесплатному сыру в дырки не заглядывают...
$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);
Вроде работает. Наверное, проблемы из-за кодировки были...
Игорь_Vasinsky
27.08.2013 - 21:33
Цитата |
Вытащить номер до текста. |
ищете цифровой номер номер - ищите цифры
_____________
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