![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| manjak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.1.2013 Репутация: нет Всего: нет |
Добрый день.
Нужна помощь с регуляркой замены. Суть такова, есть строка "слово 1 слово 1-еще слово слово 1 слово 1 и все". Фразу, которую надо удалить - "слово 1". Вот что у меня есть:
Вот что я получаю после приминения: "слово 1-еще слово слово 1 и все" . Вот что хотелось бы получить: "слово 1-еще слово и все". Вот в чем проблема: если искомая фраза повторяется через пробел, то preg_replace не заменяет ее. Как и что нужно изменить в регулярке? |
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
Задачу вы поставили довольно абстрактно. Чтобы ее решить, то и регулярки, как таковой, не требуется... Например, http://regexr.com?33fc0 Это сообщение отредактировал(а) Arantir - 20.1.2013, 19:24 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| manjak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.1.2013 Репутация: нет Всего: нет |
preg_quote использую на случай наличия спец символов в фразе, в данном случае оно не надо, так как в примере все довольно просто.
то что вы предлагаете немного не подходит. Если мы будем иметь строку "слово 1 слово 1-еще слово слово 1 слово 1 слово 1 и всеслово 1 " то после применения того что вы предлагаете получим "слово 1-еще слово и все" а должны "слово 1-еще слово и всеслово 1". Вот как то так. Задача моя в чем, есть фраза, которую надо заменить допустим на пробелы. Фраза может находиться как в начале строки, так и в конце. и фраза должна быть не составляющей слова, тоесть быть отделена пробелами. |
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
Тогда не следует включать в результат пробел перед словом, а только пробел после. Делается с помощью лукхэдов.
(?<=^| )слово 1($| ) В результате выйдет то, что вы попросили в последнем посте. Пример http://regexr.com?33fcf Могу повторить еще раз, что вы неправильно ее используете, хоть на случай, хоть без случая. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| manjak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.1.2013 Репутация: нет Всего: нет |
Спасибо. С позитивным просмотром назад работает. Я так и думал что ответ кроется где-то в просмотрах вперед и назад.
|
|||
|
||||
| manjak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 20.1.2013 Репутация: нет Всего: нет |
Вопрос решен.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |