Всем привет! С модреврайтом дела иметь не приходилось, поэтому строго не судите... Ситуация следующая: Есть сайт http://site.ru, и страница на нём page.php. На этой странице информация выдаётся разная для разных регионов, необходимо, чтобы URL адреса для регионов были разные.. Например: http://site.ru/msk/page.php http://site.ru/spb/page.php http://site.ru/nnov/page.php Обрабатывается это всё так: Code: RewriteRule ^(msk|spb|nnov)/(.*)$ $2 Тут всё отлично, работает как надо... Но вот задача, если пользователь зашёл напрямую на страницу http://site.ru/page.php, то его надо переадресовать на страницу, учитывая регион, например на http://site.ru/spb/page.php, если он из Питера... Регион определяется тоже нормально, и переадресация проходит, а вот с отображением страницы проблемы... Делаю так: Code: # Получаю из куков регион RewriteCond %{HTTP_COOKIE} region=([^;]+) # Проверяю, нужно ли переадресовывать, то есть если REQUEST_URI начинается не с msk, nnov или spb, то переадресовываю... RewriteCond %{REQUEST_URI} !^/(msk|nnov|spb) # Далее непосредственно переадресовываю RewriteRule (.*) http://site.ru/%1/$1 # И, наконец, обрабатываю ссылку, чтобы отображалось содержимое page.php RewriteRule ^(msk|spb|nnov)/(.*)$ $2 Переадресация с http://site.ru/page.php на http://site.ru/[РЕГИОН]/page.php проходит успешно, но вот содержимое не отображается... Выдаёт 302 Found Code: Found The document has moved here. Подскажите, как лучше сделать..?! Заранее спасибо!
Помогите составить регулярку, есть текст, с этого текста нужно вытащить только три строки Server: idsoi.kos.ru login: lsdfr password: QgSuP4kt Вытащить надо то, что идет после Server: login: password:
PHP: preg_match("/Server:(.*?)\n/",$text); preg_match("/login:(.*?)\n/",$text); preg_match("/password:(.*?)\n/",$text);
Как через .htacess переписать запрос типа /img/a/b/c.jpg на /img/a_b_c.jpg ? При этом колличество слешей (вложенность) может меняться...
Как составить регулярку, чтоб она брала подобное? [постоянная строка] [переменная строка, но не нужная] [постоянная строка]=[значение] делал так, но думаю, что это неэффективно, так как лишние данные берутся. PHP: preg_match_all('@lalala(.*?)data="(.*?)"@s', $b, $c);
А какие данные то нужно брать? [значение]? Вообще желательно полный пример исходного текста (если таких строк несколько в $b, то и их привести)
Да, [значение]. Вот пример. PHP: <td class="link"> blalala blalala blalala blalala blalala data={Нужная строка} lalalalalalalalalalalalalalalalalalalala lalalalalalalalalalalala lalalalalalalala lalalala </td> <td class="unlink"> vhkjfsdhf h sdif soifos dhf sdfsdoifs data={Нужная строка} </td> выбрать нужно {Нужная строка} Она встречается дважды и она одинаковая, но выбрать нужно ту, которая в блоке <td class="link"> ... </td> то есть по идее регулярка вроде такой должна быть, но она не сработает как нужно. @<td class="link">.*data=(.*?)</td>@ В принципе, намного проще поступить вытащив тупо @data=(.*?)@ и потом от дублей избавится при помощи array_unique, но хочется путём наикратчайшим это сделать, то есть одной только регуляркой.
Если на странице только одно значение надо брать(иначе preg_match_all), то вот регулярки: Более точная регулярка: preg_match('/class="link">.*?data=(.*?)\n/s', $cont, $match); print_r($match[1]); Можно такую, если перед нужной строкой точно не встретится data= '/data=(.*?)\n/s' Ps. .*? - знак вопроса задаёт нежадный режим поиска, тобишь ищет до элемента указанного после знака вопроса и сразу останавливается, а не до последнего найденного во всём контенте.
Может кто помочь с регуляркой для notepad++ Есть база данных вида: фио:79151234567 фио:791512 : фио:9151234567 фио:7915123456777 : фио:79151234567 фио: фио: фио:791512345 Нужно удалить все лишние строки. Оставив лишь фио (как рус. так и анг. буквы) и номера от 10 до 11 цифр.
Code: \r\n.*?:(?:\d{1,9}|\d{12,}|\D|$)$ Вроде должно работать. Не найдёт в первой строке ничего, так как для удобства поставил \r\n, чтобы сразу пустые строки убивались.
Ребята, выручайте с правилом(регуляркой) для .htaccess! Нужно, чтобы хосты с рефером вида "fvty67ri67f.com" или "56f5685jfgh.info"(домен из списка) посылались на статическую страницу /hren_vam.html Делаю так(раз спрашиваю - разумеется не пашет) -
Как составить регулрку, что бы функция preg_match() возвращала true если в строке НЕ ip адрес (IPv4) и false если в строке IP адрес и нечего лишнего?
$result = !preg_match("/^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$/", $str);
Подскажите регулярку. В переменной у меня HTML код страницы. Нужно выдрать все ссылки, в атрибуте href которых только строка, начинающаяся на символ /, или не начинающаяся на символ /, но содержащая в себе домен моего сайта типа http://moisait.ru в начале. Заранее спасибо.
Может так!? PHP: preg_match_all('#<a.* href=.(/.*).>#U', $html, $a); preg_match_all('#<a.* href=.(http://domain\.ru.*).>#U', $html, $b); $links = array_merge($a[1], $b[1]); print_r($links);