- 1
- 2
- 3
- 4
- 5
function get_the_fucking_first_image_from_the_fucking_content_DUDE_is_this_really_so_hard($content)
{
preg_match_all('/(<img .*? src=\"\/images.*?\">?)/', $content, $result);
return $result[0][0];
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+164
function get_the_fucking_first_image_from_the_fucking_content_DUDE_is_this_really_so_hard($content)
{
preg_match_all('/(<img .*? src=\"\/images.*?\">?)/', $content, $result);
return $result[0][0];
}
мне кажется, коллега задолбался
Little-Horny 08.01.2014 17:39 # 0
mr.The 08.01.2014 19:17 # +4
Lowezar 09.01.2014 01:48 # 0
Чуть было не запостил не глядя на предыдущие комменты. :) Мем оброс бородой попуще Гендальфа, но терять актуальность пока не собирается, похоже. :)
Ах, сколько раз этот пост тёрли, восстанавливали, банили, ревёртили...
anonimb84a2f6fd141 09.01.2014 02:05 # +1
>I think the flaw here is that HTML is a Chomsky Type 2 grammar (context free grammar) and RegEx is a Chomsky Type 3 grammar (regular grammar). Since a Type 2 grammar is fundamentally more complex than a Type 3 grammar (see the Chomsky hierarchy), you can't possibly hope to make this work. But many will try, some will claim success and others will find the fault and totally mess you up.
Но в коментах
>@AdamMihalcin is exactly right. Most extant regex engines are more powerful than Chomsky Type 3 grammars (eg non-greedy matching, backrefs). Some regex engines (such as Perl's) are Turing complete. It's true that even those are poor tools for parsing HTML, but this oft-cited argument is not the reason why. – dubiousjim May 31 '12 at 13:44
Так что ответа не видать. Типикал stackoverflow.
bormand 09.01.2014 05:58 # 0
> Do I have that right?
Нет, неправильно. Надо юзать нормальные парсеры, тот же суп.
> And more importantly, what do you think?
Ну вот чел и отписал, что он думает по этому поводу. Я тоже думаю, что парсить хтмл регулярками - пиздец. Ну разве что можно выдрать какие-то конкретные куски, типа ценников из прайса, если их не много, и под рукой нет вменяемого парсера. Но судя по open tags чел собирался делать полный парсинг.
Язык он не написал, поэтому предложить ему какой-то конкретный парсер хтмля не получится.
А как бы ты ответил на его вопросы?
anonimb84a2f6fd141 09.01.2014 06:40 # −1
bormand 09.01.2014 06:50 # +1
Да почему нельзя то ;) Можно в частных случаях (если движок типа перла с рекурсивными регулярками или если выдрать пару конкретных полей).
Просто зачем эта боль в жопе, если почти под все языки есть нормальные готовые парсеры типа того же супа и xpath/css selector?
> почему нельзя парсить html регулярками, там нету
Ну так то да. Вменяемым ответом было бы "можно, но это боль в жопе, юзай нормальный парсер".
kegdan 09.01.2014 06:56 # 0
bormand 09.01.2014 07:07 # 0
Нет. Регулярки того же перла умеют в рекурсию. Просто полноценный парсинг хтмля регулярками это дикая боль в жопе, и куча граблей, на которые можно налететь ;)
> Нормальный парсер и Xpath надо юзаtь
Угу, ну или css селекторы как в супе.
kegdan 09.01.2014 07:09 # 0
Того же шестого?)
bormand 09.01.2014 07:41 # 0
Как-то так: http://www.catonmat.net/blog/recursive-regular-expressions/
kegdan 09.01.2014 07:48 # 0
anonimb84a2f6fd141 09.01.2014 08:58 # 0
Lowezar 09.01.2014 11:47 # +2
Просто на момент появления мема вопросы про "почему я написал такую регулярку, а она не находит вот такой передподвыподверт?" появлялись чуть ли не каждую неделю, и основательно задолбали отвечающих и удаляющих. :)
anonimb84a2f6fd141 09.01.2014 22:31 # +1
Lowezar 10.01.2014 01:44 # 0
anonimb84a2f6fd141 10.01.2014 02:39 # 0