[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярки. Найти все, кроме
yellowcat
Подобная тема уже была, но вразумительного ответа не было. Постараюсь четко поставить задачу. Есть текст

one two tree span four <span style="font-color:#444"> five</span>


необходимо выкусить одной регуляркой тег <span> и вернуть строку "one two tree span four". Зачем? Надо! Порядок слов и количество, естественно, меняется в зависимости от исходного текста. Смысл - не меняется. Иными словами, нужно выкусить все, кроме одного тега.

Господа программисты. Уважайте и свое и мое время. Отвечайте только по существу без флуда и вопросов типа: "Зачем тебе все это?".
Заранее благодарен.



Спустя 1 час, 54 минуты, 16 секунд (2.12.2009 - 01:47) Dron19 написал(а):
Напишите ваш текст и что из него должно получится, а мы Вам ответ!

Спустя 9 часов, 40 минут, 33 секунды (2.12.2009 - 11:27) yellowcat написал(а):
Цитата (Dron19 @ 1.12.2009 - 22:47)
Напишите ваш текст и что из него должно получится, а мы Вам ответ!

Я уже написал мой текст и то, что из него должно получится.

Спустя 5 минут, 9 секунд (2.12.2009 - 11:32) glock18 написал(а):
может эта "регулярка" strip_tags называется?

Спустя 59 минут, 34 секунды (2.12.2009 - 12:32) yellowcat написал(а):
нет

Спустя 8 минут, 26 секунд (2.12.2009 - 12:40) glock18 написал(а):
жаль, я невнимательно посмотрел. тогда

/<span>(.*?)</span>/i

если вложенных тегов нет

Спустя 2 дня, 9 часов, 37 минут, 14 секунд (4.12.2009 - 22:17) Dron19 написал(а):
Цитата (glock18 @ 2.12.2009 - 09:40)
жаль, я невнимательно посмотрел. тогда

/<span>(.*?)</span>/i

если вложенных тегов нет

У вас выдаст ошибку, потому, что Вы не экранировали закрывающийс тэг span.
Я бы лично попытался сделать так

<?php

$test = preg_replace("/(.*?)<(.*?)>(.*?)<\/(.*?)>/i","\\1",$template);

/* Этот пример будет вырезать все в указанной переменной где найдет такой шаблон: бла-бла <тэг и если есть атрибуты>бла-бла</тэг>
и выдаст первое бла-бла! */


?>

Спустя 11 часов, 16 минут, 27 секунд (5.12.2009 - 09:34) yellowcat написал(а):
Цитата (glock18 @ 2.12.2009 - 09:40)
жаль, я невнимательно посмотрел. тогда

/<span>(.*?)</span>/i

если вложенных тегов нет

Что по вашему будет искать эта регулярка?
совсем не то, что надо по условию.

Товарищи программисты. Большинство из вас тут сидящих - некомпетентны в вопросах. Вы пытаетесь давать ответы другим, хотя сами слабо разбираетесь в данной теме. Очень жаль.

Спустя 2 часа, 39 минут, 45 секунд (5.12.2009 - 12:14) glock18 написал(а):
yellowcat
вы видимо тем более не программист, раз не можете выполнить банальное логическое заключение из этого. насчет моей компетенции не вам судить
$res = preg_replace(<pattern>, '');


насчет слеша уже сказали.

Спустя 21 минута, 8 секунд (5.12.2009 - 12:35) twin написал(а):
Господин yellowcat. Прежде чем делать заявления плана
Цитата
Уважайте и свое и мое время.

а потом ничем не обоснованный вывод
Цитата
Большинство из вас тут сидящих - некомпетентны в вопросах.

научитесь это делать сами. Ставьте вопрос корректно. Какой именно текст Вас интересует? Конкретно этот:
<span style="font-color:#444">

а этот уже нет?
<span style="font-color:#555">

Имется ли вероятность нахождения внутри этого тега какого то другого спана?
Изменяется ли текст внутри тега или интересует именно это слово?
Есть ли текст после приведенного участка до конца строки или вообще?
Что обозначаент слово "выкусить"? Удалить или выбрать?

Так что задача крайне размыта и требовать однозначного ответа на неё вы ни как не можете. И тем более с вашей компетенцией не стоит делать оценки отвечающим.

Сэкономьте мое время, распишите задачу четко и подробно. Я дам Вам решение. А форум телепатов в другом месте.

Спустя 1 час, 45 минут, 44 секунды (5.12.2009 - 14:21) yellowcat написал(а):
прошу прощения у многоуважаемой публики. Я действительно неправильно поставил задачу и сделал ошибку, сказав, что человек некомпетентен, так как его ответ не решал именно мою задачу, а решал задачу, поставленную на форуме. В целом задача выглядит так:


.......лишний текст с тегами.....
<!--content-->
one two tree span four <span style="font-color:#444"> five</span> six seven
<!--eof content-->

.......лишний текст с тегами.....</span>



необходимо вернуть строку вернуть строку "one two tree span four six seven" одной регуляркой. Возможно ли это? Тег <span> может содержать вложенные span'ы

спасибо.

Спустя 54 минуты, 17 секунд (5.12.2009 - 15:15) twin написал(а):
Самый элементарный вариант вот:
$text = '.......лишний текст с тегами.....
<!--content-->
one two tree span four <span style="font-color:#444"> five</span>
<!--eof content-->
.......лишний текст с тегами.....'
;

preg_match_all("#\n(.+?)<span(.*)> five#i", $text, $out);

print($out[1][0]);

Если не используется многобайтная кодировка. Для UTF-8 желательно добавить модификатор u
Можно еще проще, но не ясны до конца условия.
preg_match_all("#\n(.+?)<#i", $text, $out);

Спустя 4 часа, 41 минута, 34 секунды (5.12.2009 - 19:56) glock18 написал(а):
<!--content-->

<!--eof content-->

если такие комментарии там есть на деле, то имеет смысл сначала обрезать все что не между ними обычными strpos-substr
Быстрый ответ:

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