|
|
|
| Здравствуйте. Помогите пожалуйста. Очень нужна ваша помощь. Пример желательно привести на Perl, но если покажете на PHP - тоже ничего страшного. Вот что надо сделать:
Есть строка
$text="<!--*text -->123<!--* /text--><!--*txt-->123<!--*/txt--><!--* tex -->123<!--* /tex -->";
Нужно с помощью регулярных выражений посчитать сколько раз встречается комбинация (где написаны ( возможные пробелы) - могут быть пробелы)
<!--*()что-то( )-->любой текст<!--*( )/что-то( )-->
Должно получиться 3 раза.
Заранее спасибо! | |
|
|
|
|
|
|
|
для: [ alien ]
(23.11.2006 в 15:15)
| |
<?
$text="<!--*text -->123<!--* /text--><!--*txt-->123<!--*/txt--><!--* tex -->123<!--* /tex -->";
echo preg_match_all('#<!--\*[\s]*(.+?)[\s]*-->(.*)<!--\*[\s]*/\1[\s]*-->#', $text);
|
не запускал, но должно быть 3:) | |
|
|
|
|
|
|
|
для: Loki
(23.11.2006 в 17:49)
| | Ругается
Warning: preg_match_all() expects at least 3 parameters, 2 given in z:\home\localhost\www\p.php on line 3
|
=((
Третья строка - это где эхо =( | |
|
|
|
|
|
|
|
для: [ alien ]
(25.11.2006 в 18:11)
| | Добавте третий параметр в функцию, после \1[\s]*-->#', $text допишите еще через запятую массив, куда найденные значения складывать. | |
|
|
|
|
|
|
|
для: Loki
(23.11.2006 в 17:49)
| | А не можете, пожалуйста, еще обьяснить, какие участки что обозначают? И для чего используются? Очень бы хотелось вникнуть, как все это работает... Просто брать по кускам и говорить что часть делает =0
Заранее благодарен | |
|
|
|
|
|
|
|
для: [ alien ]
(27.11.2006 в 15:00)
| |
#<!--\* - ищем такую последовательность
[\s]* -после нее может быть 0 или более пробелов, табуляций и пр
(.+?) - получаем первый токен
[\s]* - снова пробелы
--> - тут понятно
(.*) - получаем второй токен
<!--\*[\s]*/
\1 - тут мы подставляем первый токен
[\s]*-->#
|
| |
|
|
|