McLotos
21.05.2014 - 06:25
Доброе утро! =)
Появилась задача разобрать строку на составляющие, например
Цитата |
Вывести на экран "Hello World" |
Поскольку я не понимаю как работают регулярки, я решил эту задачу при помощи... никогда не догадаетесь! explode() =)
Реализовано это вот таким вот бредокодом который как не странно работает.
$expl1 = explode('"',$text);
$expl2 = explode('"',$expl1[1]);
$name = $expl2[0];
$descr = $expl1[0];
$id = explode(' ',$goods['Name']);
Если не учитывать тот факт что эта реализация на уровне дошколенка, то работает он идеально при одном условии - слово в кавычках должно быть в конце строки.
А чтобы не зависеть от расположения заголовка в строке нужно придумывать регулярки. Вот честно сколько не читал манов по регуляркам, они для меня все-равно BrainFuck =)
Я погуглил и нашёл такой вариант
Цитата |
preg_match_all("/\"(.*?)\"/i", $str, $matches); |
Не удивлюсь если он ещё и работает, но мне всё-же не понятно что происходит в этой функции, в неё передается BrainFuck, строка которую нужно обработать, массив который нужно создать с результатами. Есть какой-то ну ооооочень детальный мануал по регуляркам?
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Игорь_Vasinsky
21.05.2014 - 06:54
Цитата |
никогда не догадаетесь! explode() =) |
да это самый популярный способ у тех кто не работал с регулярками))
http://www.php.net/manual/ru/regexp.introduction.phphttp://www.php.su/articles/?cat=regexp&page=008http://phpfaq.ru/regexp
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
К выше озвученным стоит добавить
Общая статья по
Регулярным выражениям на Википедии А картинку из статьи можно распечатать и повесить над столом. В ней есть ответы на большинство вопросов.
Очень понятно всё описано, мне эти маны помогли в своё время
http://www.softtime.ru/bookphp/gl7_1.phphttp://regex101.com/ - сервис для отладки regex, при чем всё наглядно и понятно. Поможет в обучение.
Так же есть хорошая книга
Дж.Фридл. Регулярные выражения. 2-е издание
(сам не читал, но люди говорят)
Скачать эту книгу и пару cheatsheet по regex
sergeiss
21.05.2014 - 13:05
SergeySA, насчет твоей фразы
Цитата (SergeySA @ 21.05.2014 - 06:25) |
эта реализация на уровне дошколенка |
Обрати внимание на то, что даже разработчики ПХП говорят в хэлпе, что если задачу можно сделать без регулярок, то ее лучше делать без регулярок. Например, если более простые функции позволяют получить требуемое.
И причина объяснена: регулярки весьма "ресурсоемки".
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
McLotos
21.05.2014 - 16:13
sergeiss
т.е. это у меня ещё адекватный вариант решения?
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
21.05.2014 - 17:17
SergeySA, в твоем случае, я думаю, с регулярками будет лучше
Проблема только в том, что у тебя прозвучала такая мысль, что "explode плохо, регулярки хорошо". Я только хотел подчеркнуть, что нет такого абсолюта. В случаях, когда можно обойтись простыми средствами, надо работать ими. А то было такое на форуме, что простое деление строки по пробелу делали регулярками - вот это уже был изврат
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Zzepish
21.05.2014 - 17:36
Игорь_Vasinsky
Цитата |
да это самый популярный способ у тех кто не работал с регулярками)) |
О_о есть программисты, которые не работают с регулярками?