Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как убрать пустые теги.
 
 автор: Николай2357   (11.07.2008 в 18:34)   письмо автору
 
 

Не могу придумать, как убрать "пустые" теги. Не то что пустые, а неопределенные, без стилей. В частности <span>. Вся беда в том, что в нутри них может быть как текст, так и другие теги. А убрать нужно пару <span></span>. Как же убратьтолько их? Может знает кто нибудь?
Спасибо.

   
 
 автор: AcidTrash   (11.07.2008 в 23:25)   письмо автору
 
   для: Николай2357   (11.07.2008 в 18:34)
 

>В частности <span>. Вся беда в том, что в нутри них может быть как текст, так и другие теги. А >убрать нужно пару <span></span>.

$text=preg_replace("#<span.*?>|</span>#is","",$text);   

   
 
 автор: sms-send   (12.07.2008 в 03:02)   письмо автору
 
   для: AcidTrash   (11.07.2008 в 23:25)
 

Это выражение удалит все теги span, без разбора.

   
 
 автор: Николай2357   (12.07.2008 в 05:40)   письмо автору
 
   для: sms-send   (12.07.2008 в 03:02)
 

Да, действительно. Я пробовал
$text=preg_replace("#<span(\s*?)>|</span>#is","",$text);

так он все "хвосты" сносит. А что обозначает is?
Спасибо.

   
 
 автор: sms-send   (12.07.2008 в 03:06)   письмо автору
 
   для: Николай2357   (11.07.2008 в 18:34)
 

Здесь скорее придётся разбирать разметку по тегам в структуру и уже из неё удалять ненужные элементы. Если разметка не xhtml, то будет довольно хлопотная процедура.

   
 
 автор: jbs   (12.07.2008 в 11:40)   письмо автору
 
   для: Николай2357   (11.07.2008 в 18:34)
 


preg_replace("#<span>(.*?)</span>#i","$1",$text);

   
 
 автор: Николай2357   (12.07.2008 в 15:22)   письмо автору
 
   для: jbs   (12.07.2008 в 11:40)
 

Вот ведь. Изумительно работает. Спасибо.
А можно обнаглеть и попросить немного подробностей, как это работает.
Еще раз спасибо.

   
 
 автор: sms-send   (12.07.2008 в 22:15)   письмо автору
 
   для: Николай2357   (12.07.2008 в 15:22)
 

А это выражение находит пары <span> </span> с любым минимальным по длине содержанием между ними - (.*?).
Затем вся совпавшая подстрока заменяется на подмаску (.*?).
Это выражение может разрушить подобную структуру html:

<span>
<form>
<span class="class1">

</span>
</form>
</span>


После обработки получится:


<form>
<span class="class1">


</form>
</span>

   
 
 автор: Николай2357   (14.07.2008 в 02:47)   письмо автору
 
   для: sms-send   (12.07.2008 в 22:15)
 

Большое спасибо, очень полезная информация. То, что нужно.

   
 
 автор: Николай2357   (16.07.2008 в 00:06)   письмо автору
 
   для: Николай2357   (14.07.2008 в 02:47)
 

Замучали меня эти спаны. Не могу убрать вот это:
<span style="spacerun: yes"></span>
$text=preg_replace("#<span(.*?)></span>#","",$text);
Не помогает,а
$text=preg_replace("#<span(.*?)>(\s*?)</span>#","",$text);

вырезает все остальные. Помогите разобраться, сил больше нет с ними воевать.
Спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования