- 1
- 2
- 3
- 4
function m($s, $re)
{
return preg_match($re, $s);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+168
function m($s, $re)
{
return preg_match($re, $s);
}
Из какого-то движка такая вот функа в файле function.php
ZLOvar 11.10.2010 17:27 # 0
Lure Of Chaos 11.10.2010 18:03 # 0
можно фантазировать и далее, но впечатление уже создается: что делает код, непонятно, и ловля жуков становится практически невозможной
Dummy00001 12.10.2010 00:02 # +1
Мистер Хэнки 12.10.2010 08:33 # 0
imho
seonull 12.10.2010 11:07 # +1
Lure Of Chaos 12.10.2010 16:22 # 0
Мистер Хэнки 12.10.2010 16:25 # 0
я и не думал, что воспримете так буквально, дескать "функции ваще не нужны, лучше прям на месте весь код писать" ...
Lure Of Chaos 12.10.2010 16:35 # 0
function writeln($s){echo($s."\n");}
и т.д.
Vasiliy 12.10.2010 18:28 # 0
Lure Of Chaos 12.10.2010 23:17 # 0
seonull 12.10.2010 17:27 # +1
Lure Of Chaos 12.10.2010 17:33 # 0
seonull 12.10.2010 17:57 # +1
Lure Of Chaos 12.10.2010 23:21 # 0
здесь же беда регекспов в их популярности. Кодомартышки не интересуются предметной областью, поэтому они берут первый попавшийся инструмент - неважно, годится он для задачи или не очень.
seonull 12.10.2010 23:50 # +1
Lure Of Chaos 13.10.2010 10:11 # 0
хак - это вы о регэкспах? ну, значит и перл - язык для хакеров ))
> как например правильно выдернуть что-то из готовой хтмл странички
правильно - пропарсить документ путем SAX, реагируя на определенные теги или их комбинацию. Недостаток один - документ должен быть правильно сформирован (well-formed XML), что относится к XML, xHTML, но, увы, не HTML4-.
> как быстро, не затрачивая ресурсов убрать теги из текста
Если нам дана только строка, то:
быстро "не заморачиваясь" -- использовать (осторожно) те же регекспы. Можно и просто в цикле методом indexOf поубирать теги.
Если же у нас есть DOM-дерево, уже построенное парсером, тогда нам уже и делать нечего
> ответ - никак
во-первых, если задача есть, ее надо решать. Во-вторых, я понимаю ваше "никак" в том смысле, что не существует и красивого, и быстрого, и нересурсоемкого способа решения (кстати, как любой другой) задачи.
Вот именно поэтому нужно проанализировать различные существующие пути и выбрать наиболее подходящий в данном случае.
seonull 13.10.2010 12:07 # 0
вот именно. но даже если бы у нас был реальный xhtml любое изменение дизайна поломало бы наш гениальный алгоритм.
// использовать (осторожно) те же регекспы.
но это и есть хак, и результат не предсказуем. так что или правельно или быстро. увы )
никак означает что не все задачи имеют правильное решение.
первая задача в принципе не имеет надежного решения.
вторую нельзя правильно решить без полного анализа хтмл и всех используемых языков включая тот же джаваскрипт.
Lure Of Chaos 13.10.2010 12:31 # 0
смотря какой алгоритм, и какое изменение.
> первая задача в принципе не имеет надежного решения
ну никто не застрахован от, скажем, падения напряжения, так что нельзя требовать, что бы алгоритм адаптировался к любым изменениям.
> но это и есть хак, и результат не предсказуем. так что или правельно или быстро. увы )
это не хак. Это вполне документированная возможность, никакого шаманства.
Но все зависит от задачи. В одном случае мы решаем одну задачу, в другом другую, похожую.
> вторую нельзя правильно решить без полного анализа хтмл и всех используемых языков включая тот же джаваскрипт.
вторая задача: убрать хтмл-теги, то есть все то, что между уголками. Если формулировать именно так, то той же пхп-функцией нормально убираются. Без парсинга и анализа.
seonull 13.10.2010 12:37 # 0
Lure Of Chaos 13.10.2010 10:18 # 0
1. Раз мы в разделе PHP, то платформа нам дает готовую функцию strip_tags
2. Почему поручать регекспам это считается плохо: на самом деле, не так уж плохо. А вот плохо то, что 99% тех, кто использует регекспы для вырезки тегов, используют регулярку, которая обламывается на вложенных тегах
seonull 13.10.2010 12:13 # 0
echo strip_tags("<script>hello</script>");
угадайте с одного раза почему оно не убирает джаваскрипт.
Lure Of Chaos 13.10.2010 12:24 # 0
istem 13.10.2010 12:28 # 0
так не будет убирать
К.О.
Lure Of Chaos 12.10.2010 16:21 # 0
Arigato 12.10.2010 18:21 # 0
Lure Of Chaos 12.10.2010 23:24 # 0
Анонимус 12.10.2010 21:23 # 0