|
 1.2 Кб |
|
| Здравствуйте.
Не силен в регурярках, поэтому прошу помощи у специалистов.
Нужно составить регулярное выражение, причем так, что если оно удовлетворяет условию забрать из него четыре вхождения.
Поможете?
Информация по составлению регулярки находится в прикреплении, так как форум почему-то не дает добавить образец. Говорит что я спамер.
Образец написан с bb кодами этого сайта, так что кому не сложно, добавьте текст из прикрепления сообщением форума.
Спасибо. | |
|
|
|
|
|
|
|
для: r2Ccube
(30.09.2011 в 16:59)
| | Вы же регулярное выражение уже полностью составили или конечный вариант не работает?
PS Форум нервно относится к некоторым последовательностям, если вы первый раз обращаетесь, сейчас все сообщения должны проходить нормально. | |
|
|
|
|
|
|
|
для: r2Ccube
(30.09.2011 в 16:59)
| | надеюсь я правильно понял
<?php
$pattern = "~http://[a-z0-9-]+\.[a-z]+\?(?:a|b|p)=([0-9]{1,6})\|([0-9abcdef]{32})\|([\w,]+)\|([\wа-яё=&.@\[\]#\s]+)~i";
$replacement = "шаб_№1: $1\nшаб_№2: $2\nшаб_№3: $3\nшаб_№4: $4";
echo preg_replace($pattern, $replacement, $string);
?>
|
регулярка получилась жуткая.
>После шаблона идет символ решетка, а за ним уже не важно что, но тоже хотелось бы забрать получается пятым вхождением.
хз о чём речь | |
|
|
|
|
|
|
|
для: f111
(30.09.2011 в 19:52)
| | Да, спасибо, почти оно.
location.hash после знака # (якорь ссылки) попадает в четвертое вхождение, а не должен. Как его убрать из № 4? Если я изменяю выражение оно перестает работать. | |
|
|
|
|
|
|
|
для: r2Ccube
(02.10.2011 в 16:11)
| | ~http://[a-z0-9-]+\.[a-z]+\?(?:a|b|p)=([0-9]{1,6})\|([0-9abcdef]{32})\|([\w,]+)\|([\wа-яё=&.@\[\]\s]+)#~i | |
|
|
|
|
|
|
|
для: f111
(02.10.2011 в 19:39)
| | Я так пробовал, не работает.
<?php
$string = 'http://site.ru/?a=123456|645aa8b78966272294e90bd885996b88|90_,az|id_forum=6&mail=soft.ti_me@site.com&a[0]=1&a[1]=2&search=поисковая фраза#location.hash';
$pattern = "~http://[a-z0-9-]+\.[a-z]+\?(?:a|b|p)=([0-9]{1,6})\|([0-9abcdef]{32})\|([\w,]+)\|([\wа-яё=&.@\[\]\s]+)#~i";
$replacement = "шаб_№1: $1<br>шаб_№2: $2<br>шаб_№3: $3<br>шаб_№4: $4";
echo preg_replace($pattern, $replacement, $string);
?>
|
| |
|
|
|
|
|
|
|
для: r2Ccube
(02.10.2011 в 20:01)
| | после site.ru вы добавили слэшь /, которого в примере не было (я про прикреплённый файл).
~http://[a-z0-9-]+\.[a-z]+/\?(?:a|b|p)=([0-9]{1,6})\|([0-9abcdef]{32})\|([\w,]+)\|([\wа-яё=&.@\[\]\s]+)~i
| лучше использовать для preg_match/_all
а это РВ для preg_replace
~http://[a-z0-9-]+\.[a-z]+/\?(?:a|b|p)=([0-9]{1,6})\|([0-9abcdef]{32})\|([\w,]+)\|([\wа-яё=&.@\[\]\s]+)(?:[\w#.]+)~i
|
| |
|
|
|
|
|
|
|
для: f111
(02.10.2011 в 20:22)
| | Спасибо большое, все хорошо работает. | |
|
|
|
|
|
|
|
для: r2Ccube
(02.10.2011 в 22:15)
| | пожалуйста | |
|
|
|