Перечитал по регепсам. Делаю все как описано, но елки палки не идет, что то у меня это. Не даются они мне не как! Помогите разобраться. Код (Text): <div class="data"> <div class="title"> <a class="title" href="http://site.com/sdfkjhskdjfsjc">hssdfsfscskncj11111 dfdf</a> </div> И таких ссылок на странице очень много. Мне надо их все достать и записать в файл. Я ему пишу: Код (Text): ^\s<div class=\"data\">\s<div class=\"title\">\s<a class=\"title\" href=\"([http].?)\">.<\/a>\s<\/div> Ну и так и сяк. не работает Ну что я не так сделал? Я же указал ему, запомнить надо то что в круглых скобках, а именно: http://site.com/sdfkjhskdjfsjc. Пожалуйста поясните!
нет, мне надо соблюсти конструкцию как я дал. Там в коде много всяких ссылок надо именно из подобный конструкции. И вопрос вам, почему кавычки не экранируете? Это нормально?
тогда сама регулярка будет что-то вроде: '/<div class="data">\s*<div class="title">\s*<a class="title" href="([^"]*)">.*?</a>\s*</div>/si' кавычки я не экранирую, потому что внешние у меня апострофы, а не двойные кавычки. меньше парюсь
([^"]*) большое вас спасибо работает, а вот это участок не могли бы пояснить? Ну то что в скобках, понятно надо запомнить, а крыша в скобках квадратных это отрицание что не должно быть кавычек в данном фрагменте, * - это значит помнить все. Ну и суммарно помнить все, если нет кавычек. Я верно понял?
PHP: preg_match('/<div class="data">\s*<div class="title">\s*<a class="title" href="([^"]*)">.*?</a>\s*</div>/si',$page,$mathces); $rrr=$mathces[0]; Warning: preg_match(): Unknown modifier 'a' in /usr/home/user/www/test.com/ho.php on line 54 54 строка как раз и есть preg_match В чем может быть проблема?
ну... термин помнить/не_помнить уместен скорее к группированию, т.е. конструкции вида () ([^"]*) подробно: () группа, т.е. строка, которая удовлетворит условию в скобках будет сохранена [] набор. указывает на символ, который допустим в наборе. [abc] подходит к 'a', 'b' или 'c'. если у вас будет запись [^abc] то под эту конструкцию попадет любой символ, кроме символов a, b или c. * показывает, что токен, который предшествовал * может встретиться 0 или более раз
* - те это квантификатор, а я думал он в фигурных скобках всегда пишется Спасибо за подробное объяснение
символ / показывает конец регулярного выражения. вот его нужно экранировать или заменить стиль на перл #. тогда будет: PHP: <? preg_match('#<div class="data">\s*<div class="title">\s*<a class="title" href="([^"]*)">.*?</a>\s*</div>#si',$page,$matches); или PHP: <? preg_match('/<div class="data">\s*<div class="title">\s*<a class="title" href="([^"]*)">.*?<\/a>\s*<\/div>/si',$page,$matches);