Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [regexp] Не обрабатывать текст между тэгами, Применить регулярку ко всему, кроме... 
:(
    Опции темы
SamDark
Дата 20.10.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



Имеется текст:

Код

This is a test text [ code]
here is some code[/ code] and some [ b]more[ /b] text


Надо применить регулярное выражение:
Код

'~\[b\][^[]]+\[/b\]~'

ко всему тексту, кроме того, что заключен в  [ code]

Как исключить обработку между тэгами?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
-=Ustas=-
Дата 20.10.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



SamDark, какая обработка?! приведи пример


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
vasac
Дата 21.10.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 1
Всего: 36



SamDark, не совсем понял о чем ты, но имхо ты не верно разрулил выделенную часть:
~\[b\][^[]]+\[/b\]~
PM WWW   Вверх
SamDark
Дата 22.10.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



vasac
Применяемая к тексту регулярка не так важна.


-=Ustas=-
Код

function typo($str){
    return preg_replace_callback('~(?<=(\[ /code)|^)(.*)(?=(\[ code])|$)~U', '_typo', $str);
}

function _typo($str){
   return preg_replace('~rep~', '!!!', $str[0]);
}

print typo('rep - rep [ code]norep - norep[ /code] rep - rep');


Хочется на выходе:
!!! - !!! [ code]norep - norep[ /code] !!! - !!!


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
korisarimi
Дата 22.10.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 9.5.2006

Репутация: нет
Всего: 1



Цитата

$str="something text[ code]noreg text[/code]something text";
$str=ereg_replace("(.+)(\\[ code\\].+\\[\\/code\\])(.+)","<div>\\1</div>\\2<div>\\3</div>",$str);



В общем принцип такой, чтоб разбить строку на 3 кармана, и затем уже работать с ними как душе угодно.

Добавлено @ 17:47 
4 раза редактировал пост, этот php=code меня замучал))). Засунул в цитату.

Это сообщение отредактировал(а) korisarimi - 22.10.2006, 17:46
PM MAIL   Вверх
SamDark
Дата 23.10.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



korisarimi
Спасибо, принцип понял. Обход тэгов сделал. Пришлось сделать рекурсию, но работет нормально.

p.s. скоро выложу у себя на сайте.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
SamDark
Дата 27.10.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



Опять подниму вопрос. Наверняка можно сделать это без рекурсии, одной регуляркой.

Для чего это надо:
Есть функция-типограф, применяемая обычно ко всему тексту, но т.к. на сайте размещается также код в <pre></pre> - необходимо его при этом обходить.

p.s. кстати, каким образом это реализовано на этом форуме?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
korisarimi
Дата 28.10.2006, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 9.5.2006

Репутация: нет
Всего: 1



Напиши поконкретнее. Выложи весь код фунции-типографа
PM MAIL   Вверх
SamDark
Дата 30.10.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



korisarimi
Код

function typograph($str){
  return preg_replace('~ - ~i', ' mdash; ', $str);
}



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
CyClon
Дата 1.11.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



Я так понял, человеку нужен парсер BB кодов, который парсит нужные коты везде, кроме текста, заключенного опять же в BB теги [code]. Самому интерестно, как это сделать, но сильно на этом не заморачивался. Может сделать так:

1. Разбиваем с помощью preg_replace_all строку на подстроки, загоняем все в массив.
2. Нужные индексы массива прогодим парсером BB-кодов.
3. Собираем строку из массива.


--------------------
user posted image
PM   Вверх
SamDark
Дата 1.11.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 4
Всего: 38



Товарищ догадался как сделать:
Код

return preg_replace_callback("/(^|(?:<\/pre|<\/style|<\/script|--)[^>]*>)(.*)($|<(?:pre|style|script|!--))/U", "_typo", $str);



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
CyClon
Дата 1.11.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



Конечно, я тормоз, написал хрен знает сколько кода, но зато это работает:

*** Сорри, код удален, т.к. форум его перековерчивает, ибо названия ББ тегов одинаковые ***

Посмотреть можно тут: http://proteam.com.ru/bb2html.txt

Это сообщение отредактировал(а) CyClon - 1.11.2006, 13:33


--------------------
user posted image
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.