Генпрокуратура России передала в прокуратуру Москвы обращение группы православных граждан с просьбой проверить на предмет экстремизма недавнюю церемонию вручения антипремии "Серебряная калоша". Среди ее лауреатов в этом году оказался патриарх Кирилл.
Чтоб было понятно: Мой вариант паттерна сделан с учетом html стандартов, и если формат результата чуть измениться (в пределах html стандарта), например добавиться атрибут class или title в div, либо и то и другое, или местами поменяются атрибуты внутри div, или id будет в двойных кавычках (по стандарту он должен быть именно в них)
Segey: Перестал работать сразу после смены пользователя от которого работает apache2, был www-data, стал например ivan
Уверены что была только просто смена пользователя, т.е. просто в конфиге место www-data написали ivan?
Илиже всеже может быть что то более поменялось, например раньше все работало через mod_php, а теперь через mod_fcgi? или что-то еще другое сменилось вместе с пользователем
Дело в том, что при таком синтаксисе, как RewriteCond %{QUERY_STRING} =id=47, CondPattern обрабатывается не как регулярное выражение. Идет тупое и быстрое сравнение на точное соответствие строке.
Это все из мануала.
Ох черт, сказывается долгое не писание правил для htaccess, совсем забыл, действительно вы правы так оно и есть
---------- Добавлено 01.07.2012 в 16:09 ----------
bon_eur: Спасибо за информацию. У меня на nginx, например, не работает - специально только что проверил.
Перепроверил у меня работает: Apache/2.2.16 + nginx/0.8.29
Неужели у вас эти три кода работают? Все, что после знака вопроса не должно матчить в паттерне. Из мануала: "The Pattern will not be matched against the query string."
Кроме того, во втором коде используется \d+, что тоже не должно работать в .htaccess. Вы не с php, случаем, перепутали? ;)
Каюсь немного напутал c RewriteRule, у него в первом параметре не может быть query, его можно только через переменные получить, но \d+ у меня в .htaccess без проблем работает т.к. со второй версии apache почти полностью поддерживает perl совместимые регулярки
http://www.newsru.com/russia/10jul2012/prok.html
Ой да ладно :)
Ну давайте так:
preg_match('@<div id=resultStats.*?>(.*?) @smi',$text,$col);
И всё, будет работать.
Будешь каждый день проверять, работает ли твой код?
Я привык, один раз качественно написал, работает всегда!
Чтоб было понятно: Мой вариант паттерна сделан с учетом html стандартов, и если формат результата чуть измениться (в пределах html стандарта), например добавиться атрибут class или title в div, либо и то и другое, или местами поменяются атрибуты внутри div, или id будет в двойных кавычках (по стандарту он должен быть именно в них)
например так:
, то паттерны siv1987, LEOnidUKG перестанут работать, а мой продолжит получать данные без каких либо изменений в паттерне
Каким паттерном получить цифру 156 из "<div id=resultStats>156 results<nobr>"?
Перестал работать сразу после смены пользователя от которого работает apache2, был www-data, стал например ivan
Уверены что была только просто смена пользователя, т.е. просто в конфиге место www-data написали ivan?
Илиже всеже может быть что то более поменялось, например раньше все работало через mod_php, а теперь через mod_fcgi? или что-то еще другое сменилось вместе с пользователем
Rulin, Чую последний год премия шла. Рпц подписи собирает в защиту гундяева. Премия была прикольная.
Ну премию Муз-ТВ уже закрыли, тоже из за скандала который разгорелся на политической почве, так что не удивлюсь если ваши слова окажутся правдой
Оператор конкатенации строк пропустили
---------- Добавлено 01.07.2012 в 16:54 ----------
Ну или кавычки заэкранировать если они там нужны как элемент строки
p.s.
Также желательно переменные ($s) выделять из строк с помощью оператора конкатенации
Дело в том, что при таком синтаксисе, как RewriteCond %{QUERY_STRING} =id=47, CondPattern обрабатывается не как регулярное выражение. Идет тупое и быстрое сравнение на точное соответствие строке.
Это все из мануала.
Ох черт, сказывается долгое не писание правил для htaccess, совсем забыл, действительно вы правы так оно и есть
---------- Добавлено 01.07.2012 в 16:09 ----------
Спасибо за информацию. У меня на nginx, например, не работает - специально только что проверил.
Перепроверил у меня работает: Apache/2.2.16 + nginx/0.8.29
http://httpd.apache.org/docs/current/rewrite/intro.html#regex
Неужели у вас эти три кода работают? Все, что после знака вопроса не должно матчить в паттерне. Из мануала: "The Pattern will not be matched against the query string."
Кроме того, во втором коде используется \d+, что тоже не должно работать в .htaccess. Вы не с php, случаем, перепутали? ;)
Каюсь немного напутал c RewriteRule, у него в первом параметре не может быть query, его можно только через переменные получить, но \d+ у меня в .htaccess без проблем работает т.к. со второй версии apache почти полностью поддерживает perl совместимые регулярки
Я проверил - у меня работает.
Ваше правило сработает в ложных случаях, например если id=470 или 47 + любое число, чего быть не должно
Такой вариант будет более правильный:
RewriteCond %{REQUEST_URI} ^\/view_posth\.php
RewriteCond %{QUERY_STRING} id=47$
RewriteRule . /view_post.php?id=189 [L]