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

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

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

 

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

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

тема: preg_match поиск по всей строке
 
 автор: poli1   (19.08.2012 в 11:28)   письмо автору
 
 

помогите, плиз. пытаюсь разобраться с рег. выражениями.
про preg_match (string pattern, string subject [, array matches [, int flags]]) пишут, что
Если matches предоставлен, он заполняется результатами поиска. $matches[0] будет содержать текст, совпавший со всем патэрном, $matches[1] будет содержать текст, совпавший первым захваченным субпатэрном в скобках, и так далее
и почему у меня не работает не пойму
preg_match("/([M][^\s]*)/", "Die Musik wird digital Mit", $matches);
        echo("matches[0]= ".$matches[0]); echo "<br>";
        echo("matches[1]= ".$matches[1]); echo "<br>";
        echo("matches[2]= ".$matches[2]); 
 

т.е.хочу выбрать все слова в тексте, которые начинаются на М
почему в ответ получаю

matches[0]= Musik
matches[1]= Musik
matches[2]=

должно вроде как

matches[0]= Die Musik wird digital Mit
matches[1]= Musik
matches[2]=Mit

пожалуйста, подскажите.

  Ответить  
 
 автор: Drago   (19.08.2012 в 14:04)   письмо автору
 
   для: poli1   (19.08.2012 в 11:28)
 

>> про preg_match пишут, что...

Там же пишут, что:

Функция preg_match() возвращает количество найденных соответствий шаблона pattern. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения. Функция же preg_match_all(), наоборот, будет продолжать свою работу пока не достигнет конца subject. Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.

  Ответить  
 
 автор: poli1   (20.08.2012 в 21:02)   письмо автору
 
   для: Drago   (19.08.2012 в 14:04)
 

ну да, видимо я в корне не поняла зачем используют рег. выр.
я собиралась эту ф-ию использовать, чтобы выбрать все слова в тексте произвольной длины (возможно по какому-то признаку, например, все слова из 4-х и более символов, а возможно нет).
теперь я даже сомневаюсь, стоит ли для этой задачи привлекать использование регулярных выражений и в частности ф-ции preg_match_all. Т.е. я понимаю, что это можно сделать через рег. выр. Но будет ли это правильно с т.зр. эффективности и т.п.
Не подскажите, какие инструменты языка лучше использовать для решения этой задачи.
спасибо.

  Ответить  
 
 автор: Sfinks   (20.08.2012 в 22:00)   письмо автору
 
   для: poli1   (20.08.2012 в 21:02)
 

РВ - это очень мощный инструмент. Соответственно довольно медленный. Соответственно, то, что можно сделать строковыми функциями - лучше сделать ими. Но это довольно ограниченный набор. Для задач типа "например, все слова из 4-х и более символов", РВ - самое то.

  Ответить  
 
 автор: poli1   (20.08.2012 в 23:38)   письмо автору
 
   для: Sfinks   (20.08.2012 в 22:00)
 

спасибо за подсказку

  Ответить  
Rambler's Top100
вверх

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