[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вырезать вложенный тег
Йакуд
Всем привет. У меня возник вопрос, как через регулярки вырезать вложенный тег?
Пример:
Имеется строка:
<span><span>квад</span>рат</span>
<span><span>
ку</span>бик</span>


Мне нужно вырезать вложенный тег, чтобы получилась строка:
<span>квадрат</span>
<span>
кубик</span>


Большая просьба помочь.. Уже долго-долго сижу и не могу составить регулярное выражение..
Заранее, спасибо! :(



Спустя 4 минуты, 13 секунд (18.11.2010 - 18:10) DedMorozzz написал(а):
preg_replace_callback юзай.

Спустя 18 минут, 1 секунда (18.11.2010 - 18:28) Йакуд написал(а):
Пытался уже заюзать... Чего только не юзал.. битый час уже сижу..
Голова кипит.. dry.gif
Кто, может, поможет добрым кодом?

Спустя 5 часов, 10 минут, 39 секунд (18.11.2010 - 23:39) Йакуд написал(а):
После долгого дополнительного обучения регулярок, я добился полного успеха! Наконец-то почти полностью в них разобрался. Данная задача решается таким способом:
while(preg_match("#(?:\<span\>)(.*\<span\>.*\</span\>.*){1,}(?:\<\/span\>)#i", $s, $arr)){
$s = str_replace($arr[1], preg_replace("#(\<span\>)|(\<\/span\>)#", "", $arr[1]), $s);
}

Этот скрипт может убить любые вложенные теги типа <span>, расположенные в любом порядке, где могут быть любые символы...

Спустя 31 минута, 25 секунд (19.11.2010 - 00:10) Йакуд написал(а):
Хм, единственное, что не учел, так это такое случай...
<span><span>квад</span>рат</span> <span><span>ку</span>бик</span> <span>Текст</span>

У меня получается вот так:
<span>квадрат кубик Текст</span>

Должно получиться нечто, вроде:
<span>квадрат</span> <span>кубик</span> <span>Текст</span>

Как можно исправить, чтобы правильно все находил?

Спустя 32 минуты, 3 секунды (19.11.2010 - 00:42) inpost написал(а):
Йакуд
Не красиво обращаться за помощью сюда, чтобы потом этот скрипт на конкурс выложить! =) Хотя спасибо за идею, это тоже надо бы мне подправить! =)

Спустя 4 минуты, 20 секунд (19.11.2010 - 00:47) Йакуд написал(а):
inpost
Одно дело весь скрипт, другое небольшой момент в регулярках..
Я же не прошу, написать за меня подсветку текста =)

Спустя 41 минута, 19 секунд (19.11.2010 - 01:28) inpost написал(а):
Ладно, пойду и я задам, раз такое дело с регулярками =)

Спустя 5 часов, 34 минуты, 36 секунд (19.11.2010 - 07:02) kirik написал(а):
Йакуд серьезно к вопросу подошел smile.gif

Спустя 2 часа, 11 минут, 17 секунд (19.11.2010 - 09:14) Семён написал(а):
Цитата (kirik @ 19.11.2010 - 08:02)
Йакуд серьезно к вопросу подошел smile.gif

Мой информатор сообщил, что у Йакуд-а, скрипт сможет менять обои в linux-e

Спустя 20 минут, 4 секунды (19.11.2010 - 09:34) kirik написал(а):
Цитата (Семён @ 19.11.2010 - 01:14)
Мой информатор сообщил, что у Йакуд-а, скрипт сможет менять обои в linux-e

Сплагиатил, однако...

Спустя 5 дней, 19 часов, 9 минут, 12 секунд (25.11.2010 - 04:43) inpost написал(а):
Йакуд
Вот всё сделал, кроме этого! Теперь я застрял на этом и усердно пытаюсь изучить регулярку =)

Спустя 13 часов, 20 минут, 7 секунд (25.11.2010 - 18:03) Dron19 написал(а):
Цитата (Йакуд @ 18.11.2010 - 21:47)
inpost
Одно дело весь скрипт, другое небольшой момент в регулярках..
Я же не прошу, написать за меня подсветку текста =)


<?
error_reporting(0);
function highlight_code($code)
{
$code = stripslashes($code);
if(!strpos($code,"<?") && substr($code,0,2)!="<?") {
$code="<?php\n".trim($code)."\n?>";
}
$code = trim($code);
return highlight_string($code,true);
}
$code = '
if(!$flag)
{
echo("Hello");
$var = 1;
}
else break;'
;
echo highlight_code($code);
?>

Вот те и подсветка кода

Спустя 3 минуты, 19 секунд (25.11.2010 - 18:06) inpost написал(а):
Вперёд на конкурс =) Сразимся на поле брани!

Спустя 3 минуты, 42 секунды (25.11.2010 - 18:10) Dron19 написал(а):
Цитата (inpost @ 25.11.2010 - 15:06)
Вперёд на конкурс =) Сразимся на поле брани!

=)

Спустя 2 месяца, 8 дней, 3 часа, 41 минута, 32 секунды (5.02.2011 - 21:52) Dron19 написал(а):
Вот тебе регулярка


<?php
$text =
'
<span><span>квад</span>рат</span>
<span><span>ку</span>бик</span>
'
;
$strip_of_tag = preg_replace("/(<.*?>)<.*?>(.*?)<\/.*?>(.*?)(<\/.*?>)/im","\\1\\2\\3\\4",$text);
echo $strip_of_tag;
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.