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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить регулярное выражение 
:(
    Опции темы
wertklop
Дата 15.5.2014, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте всем!

Есть повторяющаяся строка вида: "[tag]Какой-то текст<p> </p>Ещё какой-то текст[/tag]"
Задача в том, чтобы теги <p> и </p> заменить на '', т.е. убрать, но обязательно в пределах строки [tag]...[/tag]. В итоге должно получиться так:
"[tag]Какой-то текст Ещё какой-то текст[/tag]"

Уважаемые, помогите составить регулярку, наверняка она несложная, но у меня пока возникают трудности с ней
PM MAIL   Вверх
Sanchezzz
Дата 16.5.2014, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 41
Всего: 60



#\[tag\](.*)\[\/tag\]#is

воде так, могу ошибиться я в пьянящим состоянии


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Romikgy
Дата 17.5.2014, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



это выберет только инфу между tag а заменить надо еще будет ..
только теги <p> </p> или будут другие ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Gold Dragon
Дата 21.6.2014, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Имеем начальный текст:
Код

$str = '[tag]Какой-то текст<p> </p>Ещё какой-то текст[/tag]';

Хотя очень странный текст, почему-то очень странный разделитель. Ну уж теперь какой есть

И тут существует огромное количество способом удалить эти теги. Я покажу три:
1. Удаление.. Почему удаление, да потому что из вопроса не понятно нужны ли разделители
2. Замена
3. Разбитие на массив

Но для начала нам нужно получить данные всё что между [tag]...[/tag]

Код

// Нужно определить переменную, дабы кто-то ещё ещё где-нибудь не определил :)
$matches = null;

$returnValue = preg_match('#\[tag\](.*)\[/tag\]#isu', $str, $matches);

// Результат
echo $matches[1] . '<hr>';
//
Теперь мы имеем данные для обработки
Код

$str_new = $matches['1'];

Первый способ
Очень не понятный, но по условию задачи применимый. Тут всё до предела банально до безобразия
Код

$returnValue = preg_replace('#<p>|</p>#ius', '', $str_new);

// Результат
echo $returnValue . '<hr>';

Второй способ
Только нужно на что заменять: на пробел или запятую или на знак рубля.
И ещё, так как не совсем понятно сколько пробелов  и есть ли они вообще между тегами, то добавим дополнительное условие
Код

$returnValue = preg_replace('#<p>\s*</p>#isu', ',', $str_new);

// Результат
echo $returnValue . '<hr>';

Хотя таким способом можно и удалять ...

Ну и третий способ это просто сделать набор этих тегов.
Мне кажется это более логичным, т.е. сделать массив а уж потом что угодно можно с этим вытровать
Код

$returnValue = preg_split('#<p>\s*</p>#isu', ',', $str_new);

// Результат
print_r($returnValue); echo '<hr>';

Например получить теги через запятую
Код

echo implode(',', $returnValue);


wertklop, если что не понятно, пиши, отвечу


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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