Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчитать сколько раз подстрока входит в строку
 
 автор: [ alien ]   (23.11.2006 в 15:15)   письмо автору
 
 

Здравствуйте. Помогите пожалуйста. Очень нужна ваша помощь. Пример желательно привести на Perl, но если покажете на PHP - тоже ничего страшного. Вот что надо сделать:

Есть строка
$text="<!--*text -->123<!--* /text--><!--*txt-->123<!--*/txt--><!--* tex -->123<!--* /tex -->";

Нужно с помощью регулярных выражений посчитать сколько раз встречается комбинация (где написаны ( возможные пробелы) - могут быть пробелы)
<!--*()что-то( )-->любой текст<!--*( )/что-то( )-->

Должно получиться 3 раза.

Заранее спасибо!

   
 
 автор: Loki   (23.11.2006 в 17:49)   письмо автору
 
   для: [ 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:)

   
 
 автор: [ alien ]   (25.11.2006 в 18:11)   письмо автору
 
   для: 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


=((

Третья строка - это где эхо =(

   
 
 автор: kasmanaft   (26.11.2006 в 08:20)   письмо автору
 
   для: [ alien ]   (25.11.2006 в 18:11)
 

Добавте третий параметр в функцию, после \1[\s]*-->#', $text допишите еще через запятую массив, куда найденные значения складывать.

   
 
 автор: [ alien ]   (27.11.2006 в 15:00)   письмо автору
 
   для: Loki   (23.11.2006 в 17:49)
 

А не можете, пожалуйста, еще обьяснить, какие участки что обозначают? И для чего используются? Очень бы хотелось вникнуть, как все это работает... Просто брать по кускам и говорить что часть делает =0
Заранее благодарен

   
 
 автор: Loki   (28.11.2006 в 10:23)   письмо автору
 
   для: [ alien ]   (27.11.2006 в 15:00)
 


#<!--\* - ищем такую последовательность
[\s]* -после нее может быть 0 или более пробелов, табуляций и пр
(.+?) - получаем первый токен
[\s]* - снова пробелы
--> - тут понятно
(.*) - получаем второй токен
<!--\*[\s]*/
\1 - тут мы подставляем первый токен
[\s]*-->#

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования