Всем доброго времени суток! Возник вопрос по регулярному выражению. Есть текстовый файл. В нем персональные данные вида: 1. Иванов Иван Иванович Менеджер ~a~Индекс Телефон Мобильный Факс E-mail website~b~ 2. Петров Петр петрович Бухгалтер ~a~Индекс Телефон Мобильный E-mail~b~ После каждой строки идет перенос строки на новую. Вопрос! Как составить регулярное выражение, чтобы вытащить всю информацию между тегами ~a~ и ~b~(назовем их так), при условии, что количество строк везде разное. "/~a~(.*)вот_сюда_что~b~/" Заранее благодарю за помощь.
Нужно было добавить модификатор шаблона s,так как присутствуют символы перевода строки PHP: $str='Петров Петр петрович Бухгалтер ~a~Индекс Телефон Мобильный E-mail~b~'; preg_match('/~a~(.*)~b~/s',$str,$match); print_r($match); Код (Text): Array ( [0] => ~a~Индекс Телефон Мобильный E-mail~b~ [1] => Индекс Телефон Мобильный E-mail )
PHP: $str='1. Иванов Иван Иванович Менеджер ~a~Индекс Телефон Мобильный Факс E-mail website~b~ 2. Петров Петр петрович Бухгалтер ~a~Индекс Телефон Мобильный E-mail~b~'; preg_match('/~a~(.*)~b~/s',$str,$match); echo '<pre>'; print_r($match); echo '</pre>'; А если идут подряд несколько блоков? Выражение выбирает с первого ~a~ по последнее ~b~. Нужно, чтобы отдельно было в массиве $match.
PHP: <?php $str='1. Иванов Иван Иванович Менеджер ~a~Индекс Телефон Мобильный Факс E-mail website~b~ 2. Петров Петр петрович Бухгалтер ~a~Индекс Телефон Мобильный E-mail~b~'; preg_match_all('/~a~(.*?)~b~/s',$str,$match); echo '<pre>'; print_r($match); Код (Text): Array ( [0] => Array ( [0] => ~a~Индекс Телефон Мобильный Факс E-mail website~b~ [1] => ~a~Индекс Телефон Мобильный E-mail~b~ ) [1] => Array ( [0] => Индекс Телефон Мобильный Факс E-mail website [1] => Индекс Телефон Мобильный E-mail ) )