![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| KgCoder |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
Уже третий день курю ману по регулярке. :(
Помогите решить. Есть данные:
Как заменить все встречающиеся элементы из перменной $tag, чтобы текст после обработки был таким:
Это сообщение отредактировал(а) KgCoder - 12.7.2009, 21:24 |
||||
|
|||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 1 Всего: 35 |
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| KgCoder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
При добавлении в массив $tags элемента:
Теги повторно оборачиваются :( |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
KgCoder, в моем примере тоже?
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 1 Всего: 35 |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
enof, O! 777 сообшений - нужно отметить!
Это про что смайлик? Я там, типо, защищаюсь от нескольких пробелов в tags и в эталонном тексте. что-то не так? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 1 Всего: 35 |
||||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
enof,
К примеру
В принципе, два слеша не очень то и нужны, с одним тоже работает... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 1 Всего: 35 |
ааа, все ясно, затупил чет
|
|||
|
||||
| KgCoder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
Эхм, спасибо. Сейчас пересядю на PC и попробую. И еще один вопрос. Если скажем элементов в массиве $tag будет > 500, система не нагрузиться? В принципе у меня есть кеширование, но всё-же не хотелось бы получить timeout из-за регулярок.
|
|||
|
||||
| KgCoder |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
В общем потестил. Выложу полный код (Drupal):
Теги в массиве: Karakol river, Karakol peak, Karakol city, Karakol Результат обработки: Karakol river, goes near Karakol peak and enters Karakol city. Once more Karakol Сделал так:
Теги в массиве: Karakol river, Karakol peak, Karakol city, Karakol Результат: Karakol river, goes near Karakol peak and enters Karakol city. Once more Karakol Желаемый результат: Karakol river, goes near Karakol peak and enters Karakol city. Once more Karakol Если сказать короче, то каждый тег должен выделиться в тексте. Сейчас пытаюсь искать в модулях типа wiki, glossary, а также сторонних скриптах. Добавлено через 4 минуты и 14 секунд ksnk, enof, спасибо, что откликнулись. При завершении модуля, укажу вас в списке хороших людей на drupal.org. Мелочь а приятно. Это сообщение отредактировал(а) KgCoder - 13.7.2009, 07:25 |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
Нужно отсортировать теги в массиве так, чтобы Karakol шел после Karakol river
Насчет эффективности - тут надо тестировать, но чем больше регулярка, тем она медленее "работает", так что 500 элементов - это, наверное, многовато... Вообще-то можно заменить все найденные теги по методу enof, но не на конечный "ссылочный" тег, а на какой-нибудь закорюк - @TAG[ID]@, к примеру. После полной замены всех тегов, поменять все закорюки на нужные ссылки, вторым "проходом" по массиву -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| KgCoder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
ksnk, При сортировке и использовании моего варианта будет работать? Я тут подумал над сортировкой. Кажется придётся при добавлении записей БД делать strlen и вставлять её как еще один параметр :( Или я усложняю?
|
|||
|
||||
| KgCoder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
Сделал сортировку. Использую мой регулярку.
Результат: Karakol river, goes near Karakol peak and enters Karakol city. Once more Karakol Тег Каракол будучи последним втискивается в уже отмеченный Karakol river. :( Это сообщение отредактировал(а) KgCoder - 13.7.2009, 11:07 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |