|
|
|
| Пожалуйста, подскажите как реализовать такую схему:
Есть большая строка(текст), в ней нужно найти подстроку вида: "\nТекст, Еще Один\n"
и выделить ее так Текст, Еще Один. И вернуть исходный текст, но только с выделенными фрагментами. | |
|
|
|
|
|
|
|
для: Tema
(12.03.2006 в 16:33)
| |
$str=str_replace("\nТекст, Еще Один\n","<b>Текст, Еще Один</b>", $str);
|
| |
|
|
|
|
|
|
|
для: Loki
(12.03.2006 в 16:44)
| | Нет. В том то и дело, что эту строку надо найти в исходном тексте. Их там несколько, одного типа. | |
|
|
|
|
|
|
|
для: Tema
(12.03.2006 в 17:33)
| | Тогда не понятно, почему вариант, предложенный Loki не подходит... Приведите пожалуйста пример того, что требуется сделать? | |
|
|
|
|
|
|
|
для: cheops
(12.03.2006 в 19:47)
| | Ну вот смотрите, есть некий текст, структура:
Имя, Отчество Фамилия
что-то ещевыаыаываыааыаыаыа
Еще одно Имя, Отчество Фамилия
чтоаываываываываыаыаы
и так далее. Это все просто вставляется в форму, как есть. Надо выделить Имя, Отчество Фамилию тегом <b>, а остальное оставить как есть. | |
|
|
|
|
|
|
|
для: Tema
(12.03.2006 в 20:53)
| | Хм... а ещё какие-то признаки имеются кроме того, что "Имя, Отчество Фамилия" предшествует два перевода строки? и могут ли два перевода строки встречаться в тексте "ещевыаыаываыааыаыаыа"? | |
|
|
|
|
|
|
|
для: cheops
(13.03.2006 в 01:35)
| | Еще есть пустая строка перед "Имя, Отчество Фамилия"
К тому же все три слова начинаются со строчной буквы. Больше, пожалуй, ничего нет :( | |
|
|
|
|
|
|
|
для: Tema
(13.03.2006 в 12:40)
| | После имени запятая, а после отчества нет и пробел между ними всегда один? | |
|
|
|
|
|
|
|
для: cheops
(13.03.2006 в 13:52)
| | Да. Т.е. получается Var,_Var2_Var3
Слово запятая пробел Слово пробел Слово | |
|
|
|
|
|
|
|
для: Tema
(13.03.2006 в 16:22)
| | и есть гарантия, что такого рода строка не встретится среди этого самого "ещевыаыаываыааыаыаыа"?
василий, васильевич пупкин
решил, что устал | |
|
|
|
|
|
|
|
для: Trianon
(13.03.2006 в 16:26)
| | Да есть. Текст в целом схож по структуре. | |
|
|
|
|
|
|
|
для: Tema
(13.03.2006 в 16:22)
| | Можно поступить так
<?php
$str = "Имя, Отчество Фамилия
что-то ещевыаыаываыааыаыаыа
Имя, Отчество Фамилия
чтоаываываываываыаыаы";
$pattern = "|\n([\w]+, [\w]+ [\w]+)|";
$str = preg_replace($pattern, "\n<b>\\1</b>",$str);
echo $str;
?>
|
Только первую запись нужно будет отдельно обрабатывать | |
|
|
|
|
|
|
|
для: cheops
(14.03.2006 в 00:11)
| | Я бы, откровенно говоря, ограничил имя фамилию и отчество классом русских букв. Уж больно мало зацепок в фильтре. Но в регекспах слаб еще, поэтому собственного варианта не приведу. | |
|
|
|
|
|
|
|
для: cheops
(14.03.2006 в 00:11)
| | Да, то что нужно. Спасибо! | |
|
|
|
|
|
|
|
для: Tema
(14.03.2006 в 17:43)
| | Вроде бы как выражение [[:alpha:]] - отвечает за все буквы(регистры) национального алфавита. Т.е. как я понял [A-Za-z] только по-русски. | |
|
|
|
|
|
|
|
для: Tema
(14.03.2006 в 17:48)
| | Дело в том, что существует несколько диалектов регулярных выражений [[:alpha:]] - это класс POSIX-регулярных выражений, [\w] - класс Perl-регулярных выражений, но по смыслу они эквивалентны. Однако Perl-регулярные выражения используются в perl_* функциях, а POSIX-регулярные выражения в ereg* функциях. | |
|
|
|
|
|
|
|
для: cheops
(14.03.2006 в 22:32)
| | Скажите, а можно ли сделать одновременную проверку, т.е. в одной функции preg_replace() два разных шаблона? | |
|
|
|
|
|
|
|
для: Tema
(15.03.2006 в 16:09)
| | Нет, обычно для этого два раза вызывают preg_replace() с разными шаблонами. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 13:32)
| | Скажите пожалуйста, какое рег выражение нужно написать для текста вида : Фамилия И. О. | |
|
|
|
|
|
|
|
для: Tema
(17.03.2006 в 12:31)
| | Примерно такое
"|[\w]+ [\w]\. [\w]\.|is"
|
| |
|
|
|
|
|
|
|
для: Tema
(17.03.2006 в 12:31)
| | $str = "===Фамилия И.О.===";
$pattern = "|([\w]+ [\w]\.[\w]\.)|";
$str = preg_replace($pattern, "<i>\\1</i>",$str);
echo $str; | |
|
|
|
|
|
|
|
для: Trianon
(17.03.2006 в 12:52)
| | А можно ли сделать зависимость от регистра, то есть первая буква выражения обязательно строчная? | |
|
|
|
|
|
|
|
для: Tema
(17.03.2006 в 13:52)
| | Да можно
<?php
$str = "===Фамилия И.О.===";
$pattern = "|([А-ЯЁ]+ [\w]\.[\w]\.)|";
$str = preg_replace($pattern, "<i>\\1</i>",$str);
echo $str;
?>
|
| |
|
|
|
|
|
|
|
для: Tema
(12.03.2006 в 16:33)
| | Если я правильно понял, то можно занести содержимое страницы в буфер, потом заменить текст на странице, добавив туда тэги <b> и вывести в браузер клиента. | |
|
|
|
|
|
|
|
для: ZC
(12.03.2006 в 21:27)
| | Сам текст, после обработки, записывается в файл. | |
|
|
|