Rulin

Rulin
Рейтинг
143
Регистрация
16.01.2008
Генпрокуратура России передала в прокуратуру Москвы обращение группы православных граждан с просьбой проверить на предмет экстремизма недавнюю церемонию вручения антипремии "Серебряная калоша". Среди ее лауреатов в этом году оказался патриарх Кирилл.

http://www.newsru.com/russia/10jul2012/prok.html

LEOnidUKG:
Ой да ладно :)
Ну давайте так:

preg_match('@<div id=resultStats.*?>(.*?) @smi',$text,$col);

И всё, будет работать.

Будешь каждый день проверять, работает ли твой код?

Я привык, один раз качественно написал, работает всегда!

Чтоб было понятно: Мой вариант паттерна сделан с учетом html стандартов, и если формат результата чуть измениться (в пределах html стандарта), например добавиться атрибут class или title в div, либо и то и другое, или местами поменяются атрибуты внутри div, или id будет в двойных кавычках (по стандарту он должен быть именно в них)

например так:

<div class="result" id="resultStats" title="Your Result" >156 results<nobr>

, то паттерны siv1987, LEOnidUKG перестанут работать, а мой продолжит получать данные без каких либо изменений в паттерне

dspu:
Каким паттерном получить цифру 156 из "<div id=resultStats>156 results<nobr>"?

$subject = "<div id=resultStats>156 results<nobr>";

$pattern = '/<div[^>]+id=(?:\'|"|)resultStats(?:\'|"|)[^>]*>(\d+)\s/i';

if (preg_match($pattern, $subject, $matches))
echo $matches[1];
Segey:
Перестал работать сразу после смены пользователя от которого работает apache2, был www-data, стал например ivan

Уверены что была только просто смена пользователя, т.е. просто в конфиге место www-data написали ivan?

Илиже всеже может быть что то более поменялось, например раньше все работало через mod_php, а теперь через mod_fcgi? или что-то еще другое сменилось вместе с пользователем

pbasalaev:
Rulin, Чую последний год премия шла. Рпц подписи собирает в защиту гундяева. Премия была прикольная.

Ну премию Муз-ТВ уже закрыли, тоже из за скандала который разгорелся на политической почве, так что не удивлюсь если ваши слова окажутся правдой

Оператор конкатенации строк пропустили

$args['items_wrap'] = "<ul>\n"."%3$s"."</ul>\n";


---------- Добавлено 01.07.2012 в 16:54 ----------

Ну или кавычки заэкранировать если они там нужны как элемент строки

$args['items_wrap'] = "<ul>\n\"%3$s\"</ul>\n";

p.s.

Также желательно переменные ($s) выделять из строк с помощью оператора конкатенации

bon_eur:

Дело в том, что при таком синтаксисе, как RewriteCond %{QUERY_STRING} =id=47, CondPattern обрабатывается не как регулярное выражение. Идет тупое и быстрое сравнение на точное соответствие строке.

Это все из мануала.

Ох черт, сказывается долгое не писание правил для htaccess, совсем забыл, действительно вы правы так оно и есть

---------- Добавлено 01.07.2012 в 16:09 ----------

bon_eur:
Спасибо за информацию. У меня на nginx, например, не работает - специально только что проверил.

Перепроверил у меня работает: Apache/2.2.16 + nginx/0.8.29

http://httpd.apache.org/docs/current/rewrite/intro.html#regex

mod_rewrite uses the Perl Compatible Regular Expression vocabulary
bon_eur:

Неужели у вас эти три кода работают? Все, что после знака вопроса не должно матчить в паттерне. Из мануала: "The Pattern will not be matched against the query string."

Кроме того, во втором коде используется \d+, что тоже не должно работать в .htaccess. Вы не с php, случаем, перепутали? ;)

Каюсь немного напутал c RewriteRule, у него в первом параметре не может быть query, его можно только через переменные получить, но \d+ у меня в .htaccess без проблем работает т.к. со второй версии apache почти полностью поддерживает perl совместимые регулярки

bon_eur:
Я проверил - у меня работает.

Ваше правило сработает в ложных случаях, например если id=470 или 47 + любое число, чего быть не должно

Такой вариант будет более правильный:

RewriteCond %{REQUEST_URI} ^\/view_posth\.php

RewriteCond %{QUERY_STRING} id=47$
RewriteRule . /view_post.php?id=189 [L]
Всего: 394