Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Регулярки & Mod_Rewrite] Задай вопрос, получи ответ. (https://forum.antichat.xyz/showthread.php?t=92492)

.:EnoT:. 19.11.2008 02:58

[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.
 
Очень уж много задаётся вопросов по регуляркам и мод_реврайту (набор правил которого и есть регулярные выражения). Дабы уменьшить захламление соседних тем подобными вопросами и уменьшить время поиска нужной регулярки создал эту спец. тему.

В этой специальной теме задаём вопросы по регулярным выражениям и работе Mod_Rewrite


Небольшой FAQ:
Регулярки:
Полезная статья новичкам (рекомендую)
База регулярок
Регулярки часть 1
Регулярки часть 2

Mod_Rewrite (ЧПУ)
Рекомендую почитать 2 статьи:
Статья 1
Статья 2



Отдельно созданные темы, а так же сообщения, связанные с сабжем созданные в других темах будут удаляться.

Chaak 19.11.2008 09:36

Цитата:

http://www.inattack.ru/article/586.html
Чит-лист регулярных выражений в PHP

biophreak 19.11.2008 10:08

Ссылки:
http://www.regular-expressions.info/ - Довольно неплохой сайтик по регекспам...есть примеры на разных языках
http://bogambilya.asti.dost.gov.ph/manual/ru/ref.pcre.php - конкретно по пхп
http://regexp.ru/ - тоже довольно полезный сайтик
http://www.pcre.ru/ - Perl Compatible Regular Expressions, есть яваскриптовый "конструктор" и валидатор регекспов
http://myregexp.com/ - опять-же редактор и валидатор регекспов...удобен тем, что есть подсветка синтаксиса ))

А по mod_rewrite(так и по .htaccess и апачу в целом), на мой взгляд, один из самых лучших сайтов это http://apachedev.ru/
To .:EnoT:. : Добавь плиз ссылки в первый пост...полезные...чтоб люди по всему треду не искали, если надо будет )))

bombeg 19.11.2008 11:18

http://regexlib.com/Default.aspx - домен.

rushter 19.11.2008 14:50

http://know-how.mc3.telecom.by/SintaksisModRewrite
http://www.intrigue.ru/dump/mod_rewrite.html

barnaki 19.11.2008 20:38

непонимаю
 
объясните . почему так.
mysql> SELECT "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1
mysql> SELECT "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0
какую роль имеет ^ внутри []. и почему впервый раз 1 а второй 0 ? или где про это почитать. а то это из справочника и считается наиболее исчерпывающим объяснением.

Chaak 19.11.2008 20:39

Цитата:

Сообщение от barnaki
объясните . почему так.
mysql> SELECT "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1
mysql> SELECT "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0
какую роль имеет ^ внутри []. и почему впервый раз 1 а второй 0 ? или где про это почитать. а то это из справочника и считается наиболее исчерпывающим объяснением.

Имеет роль отрицания. Т.е все символы кроме a-dXYZ. :rolleyes: А снаружи - начало строки.

kik8888 20.11.2008 13:19

mod_rewrite
 
При использовании mod_rewrite нужно ли в коде скрипта заменять ссылки стандартного вида на мод_реврайтовские? Или он сам их будет преобразовывать и выдавать как надо?

[:|||||:] 20.11.2008 13:21

http://forum.antichat.ru/thread92492.html

swt1 20.11.2008 14:17

Цитата:

Сообщение от kik8888
При использовании mod_rewrite нужно ли в коде скрипта заменять ссылки стандартного вида на мод_реврайтовские? Или он сам их будет преобразовывать и выдавать как надо?

заменить.
http://forum.antichat.ru/thread92492.html

[x26]VOLAND 20.11.2008 16:43

http://s54.radikal.ru/i144/0811/ec/798acf0c466bt.jpg

Корвин 20.11.2008 17:44

помогите, у мну проблема, вот этот реврайт на хостинге рбк(hc.ru) работает а на nic.ru не пашет

Код:

RewriteEngine on

RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) /$1/ [R=301,L]

RewriteRule ^atomax/ /modules/core/atomax/ [R,L] - эта строчка не срабатывает
RewriteRule ^modules/ - [L]
RewriteRule ^cachetime/ - [L]
RewriteRule ^cache/ - [L]
RewriteRule ^db_backup/ - [L]
RewriteRule ^csv_parser/ - [L]


RewriteRule ^(.*\/)*$ content.php [PT]

RewriteRule ^(.*\.html)*$ content.php [PT]

PS модуль реврайт включен, проверял

biophreak 20.11.2008 19:18

В логах не пишет ничего?
В логах апача, я имею в виду

Pashkela 20.11.2008 20:06

А точно " /modules/core/atomax/" остался там, где был на рбк(hc.ru)? Проверь пути в смысле относительно корня сайта там и здесь - и почуствуй разницу

!{ra!{e/\/ 20.11.2008 22:48

Помогите с регуляркой)
Как со страницы http://musicnote.ru/dir/2/ отпарсить исполнителей
Пробывал так
PHP код:

 /<td class=\"artist\"><a href=\"([a-zA-Z0-9\/]*)\">([a-zA-Zа-яА-Я0-9]*)<\/a><\/td>/isU 

Не помогает(

Chaak 20.11.2008 22:53

Цитата:

Сообщение от !{ra!{e/\/
Помогите с регуляркой)
Как со страницы http://musicnote.ru/dir/2/ отпарсить исполнителей
Пробывал так
PHP код:

 /<td class=\"artist\"><a href=\"([a-zA-Z0-9\/]*)\">([a-zA-Zа-яА-Я0-9]*)<\/a><\/td>/isU 

Не помогает(

PHP код:

preg_match_all('#<td class\="artist"><a href\="/dir/2/[0-9]+/">(.*?)</a></td>#UiS',$parse,$res); 

Твоя не работает из-за A-Я. Может быть проблема с кодировкой UTF-8 != CP-1251

!{ra!{e/\/ 20.11.2008 22:58

Цитата:

Сообщение от ChaaK
PHP код:

preg_match_all('#<td class\="artist"><a href\="/dir/2/[0-9]+/">(.*?)</a></td>#UiS',$parse,$res); 


А если еще и ссылку и исполнителя и почему мой не работает?

Ant1Player 21.11.2008 18:47

Подскажите новичку как сделать так:
есть странница(доступа к коду нет) на страницы вот ето "текст(число)"
как сделать чтоб ето число считывалось и выводилось на другой страницы

Ru}{eeZ 21.11.2008 19:04

Цитата:

Сообщение от Ant1Player
Подскажите новичку как сделать так:
есть странница(доступа к коду нет) на страницы вот ето "текст(число)"
как сделать чтоб ето число считывалось и выводилось на другой страницы

preg_match_all('/[a-z0-9а-яё]+\([0-9]+\)/i', $page, $result);

что-то типа этого

Ant1Player 21.11.2008 19:26

не ну если я так исчу например FLY он выводит
Array ( [0] => Array ( FLY ) )
а как сделать чтоб он просто выводил FLY ?

Pashkela 21.11.2008 19:48

echo $result[0];

Ant1Player 21.11.2008 19:59

терь просто выводит Array =(

Pashkela 21.11.2008 20:07

а потому что echo надо делать до, а не после. Выложи код полностью

Ant1Player 21.11.2008 20:10

<?php
$page = "FLYER";
preg_match_all('/FLY/', $page, $result);
// Производим поиск
echo $result[0];
?>
ну ет типо примера какбы (без страницы)

Pashkela 21.11.2008 20:19

PHP код:

<?php
$page 
"FLYER"
preg_match('/FLY/' ,$page$result);
// Производим поиск
echo $result[0]; 
?>

только это все ерунда какая-то. Ты можешь по-русски сказать, чо тебе надо найти и самое главное потом что вывести на экран в зависимости от того, что ты нашел

Ant1Player 21.11.2008 20:28

короче есть страницы тык
на ней в низу написано форум(150)
вот надо чтоб ети циферки считывались и выводились на тургой страницы(которую я пытаюсь сделать=))

Pashkela 21.11.2008 20:36

PHP код:

<?php
$t
=array();
$responce "<a href='http://samp-rus.com/forum/0-0-1-3-792' target='_blank'>форум(<b>150</b>)</a>"
$patern "|<[^>]+>(.*)</[^>]+>|U"
preg_match($patern$responce$result);
// Производим поиск
$t explode('(',$result[0]);
//print_r ($t);
echo $t[1]; 
?>

а если подумать минут 5, как я только что сделал, то так:)))

PHP код:

<?php
$responce 
"<a href='http://samp-rus.com/forum/0-0-1-3-792' target='_blank'>форум(<b>150</b>)</a>"
// Производим поиск
$patern "|<a(.*)target(.*)>форум\((.*)\)<\/a>|Ui";
preg_match($patern$responce$result);
echo 
$result[3]; 
?>


Корвин 21.11.2008 20:40

Цитата:

Сообщение от Pashkela
А точно " /modules/core/atomax/" остался там, где был на рбк(hc.ru)? Проверь пути в смысле относительно корня сайта там и здесь - и почуствуй разницу

точно остался там же , я полностью переносил админку на новый хостинг из htdocs в htdocs

Ant1Player 21.11.2008 20:54

немножко нето я набрал 151 сообщений а он показывает 150

Pashkela 21.11.2008 20:55

Чего не то? Второй вариант 100 пудовый, я проверял

ЗЫЖ Конкретно для той страницы, что ты дал, конечно, не надо думать, что есть универсальная регулярка для ЛЮБОЙ страницы. Для каждой в каждом случае пишется СВОЯ, УНИКАЛЬНАЯ регулярка фактически, если не классика - собрать все урлы и прочее. Когда тебе надо выцепить что-то конкретное и ОДНО со страницы - всегда УНИКАЛЬНАЯ регулярка для КАЖДОГО сайта

Ant1Player 21.11.2008 21:05

лан фот все сделал че хател
PHP код:

<?php 
$responce 
file_get_contents("http://samp-rus.com/index/8-792");
// Производим поиск 
$patern "|<a(.*)target(.*)>форум\((.*)\)<\/a>|Ui"
preg_match($patern$responce$result); 
echo 
$result[3];  
?>

+ потсавлю

Pashkela 21.11.2008 21:06

))) Спасибо

Ru}{eeZ 22.11.2008 14:43

У кого-нибудь есть регулярки поисков (название, текст, ссылка найденныго) яндекса, гугла, маилру, рамблер, апорт...? А то самому долго составлять

Ant1Player 22.11.2008 14:43

вот у меня возник есче 1 вопрос
есть страница но нанее заходит только при вводе логина и пароля
естесно таким макаром текст не проверишь нужно подгружать куки
PHP код:

<?php 
$responce 
file_get_contents("http://vkontakte.ru/id21029966?71514");
// Производим поиск 
$patern "|<a(.*)target(.*)>Сообщения\((.*)\)<\/a>|Ui"
preg_match($patern$responce$result); 
echo 
$result[3];  
?>

вопрос такой, как подгрузить куки для проверки текста

!{ra!{e/\/ 22.11.2008 15:26

Вопрос насчет Mod_Rewrite ...Обязательны ли флаги в конце.И какую роль играют флаги.Как влияют на поисковых ботов?
Мой пример
RewriteRule ^.*-ispolniteli([0-9]*)\.html$ /groop/index.php?id=$1
Все ли нормально какой флаг ставить чтоб поисковые боты не ругались)?

Pashkela 22.11.2008 15:40

Цитата:

Флаги RewriteRule
R[=code] Перенаправление на новый URL по заданному коду

F Forbidden (отправляет заголовок 403)
G Больше не существует (Gone)

P Прокси (Proxy)
L Последнее правило

N Следующий
C Chain

T=mime-type Установка mime-type
NS Skip if internal sub-request

NC Не зависимый от регистра символов
QSA Append query string (Прибавляет строку запроса)

NE Не отменяет результат
PT Через

S=x Пропустить следующие x правил
E=var:value Устанавливает переменную окружения "var" в "value".
http://www.regioninfo.ru/mod_rewrite.php

Я всегда в конце добавляю [L,QSA] и всё ок пока было

NOmeR1 25.11.2008 22:35

Цитата:

Сообщение от Ant1Player
вот у меня возник есче 1 вопрос
есть страница но нанее заходит только при вводе логина и пароля
естесно таким макаром текст не проверишь нужно подгружать куки
PHP код:

<?php 
$responce 
file_get_contents("http://vkontakte.ru/id21029966?71514");
// Производим поиск 
$patern "|<a(.*)target(.*)>Сообщения\((.*)\)<\/a>|Ui"
preg_match($patern$responce$result); 
echo 
$result[3];  
?>

вопрос такой, как подгрузить куки для проверки текста

Юзай сокеты, курл (медленнее всего), или, если у тебя PHP >= 5, добавь куки в контекст. Пример:
Код:

$opts = array(
  'http' => array(
    'header' => "Cookie: кукисы=кукисы;кукисы=кукисы;\r\n"
  )
);
$ctx = stream_context_create($opts);
$responce = file_get_contents("http://vkontakte.ru/id21029966?71514", false, $ctx);


Doom123 04.12.2008 19:29

Пишу бб коды .. .уже мозг не работает ...
нужна регулярка чтоб определяля если задан первый параметр ... тоесть ..
[link=параметр1]blabal[/link] делаю

'#\[link=(.+?)\](.*?)\[/link\]#i' если в строке только этот бб код ... тоесть
[link=]bla[/link] то регулярка понимает что параметр пуст ....

НО если строка вида ... [link=][bb]bla[/bb][/link] то регулярка понимает ][bb]
как первый параметр ... надеюсь вы меня поняли =)

VDShark 04.12.2008 19:41

Цитата:

Сообщение от Doom123
Пишу бб коды .. .уже мозг не работает ...
нужна регулярка чтоб определяля если задан первый параметр ... тоесть ..
[link=параметр1]blabal[/link] делаю

'#\[link=(.+?)\](.*?)\[/link\]#i' если в строке только этот бб код ... тоесть
[link=]bla[/link] то регулярка понимает что параметр пуст ....

НО если строка вида ... [link=][bb]bla[/bb][/link] то регулярка понимает ][bb]
как первый параметр ... надеюсь вы меня поняли =)

Например не .+ а [^]]+

Doom123 04.12.2008 19:44

уху уже нашёл спасиб )


Время: 08:48