Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.182.39] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Привет всем !!!
Начал изучать регулярные выражения и сразу же столкнулся с проблемой составления нужного мне выражения. Требуется подсказка Итак, мне нужно выделить текст, который находится внутри определённого набора символов. Например, мне нужно найти в документе все ссылки: ... $s1 = "<a href="; $s2 = ">"; $str = '<a href="http://www.mysite.net/script?searchtext=string&form_type=simple">My string</a>'; ... Как мне выделить из $str ссылку, то есть текст находящийся между строками $s1 и $s2 ? |
Сообщ.
#2
,
|
|
|
PHP FAQ: Регулярные выражения.
Там и далее имеются примеры готовых решений. Добавлено Цитата bur80 @ Подсказка - это когда ты что-то сделал, но у тебя какой-то непонятный затык. Поэтому когда просишь подсказку - разумно демонстрировать свои попытки решить проблему. Требуется подсказка |
Сообщ.
#3
,
|
|
|
Я помню как я читал мануалы о регулярных выражениях и ничего немог понять.
Я привык работать с PERL compatible выражениями, т.к. они имеют больше возможностей и гораздо быстрее. В данном случае я бы сделал так: $count_of_array = preg_match_all("/<a href=(.*)>/U","<a href=\"jkghsdj\"></a>", $ee, PREG_PATTERN_ORDER); echo $ee[1][0]; Обясню как что работает! preg_match_all возвращяет все совпадения в массив $ee, PREG_PATTERN_ORDER - флаг, каторый озночает что $ee[0][$j] содерзчит полные совпадения, а $ee[1][$j] - совпадения первой подмаски (подмаска ето то что в регулиарном выражении в скобках - т.е. (.*)). знак .* означает все символы. А вообще почитай о регулярных выражениях тут, и о функциях в PHP, каторые работают с регулярными выражениями (тут) |
Сообщ.
#4
,
|
|
|
Цитата SiMM @ PHP FAQ: Регулярные выражения. Там и далее имеются примеры готовых решений. Добавлено Цитата bur80 @ Подсказка - это когда ты что-то сделал, но у тебя какой-то непонятный затык. Поэтому когда просишь подсказку - разумно демонстрировать свои попытки решить проблему.Требуется подсказка Изучаю документацию, будут вопросы - задам в этой ветке. |
Сообщ.
#5
,
|
|
|
Документации, как всегда, море Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ?
Добавлено Edva, не совсем удачный для меня пример Мне нужны примеры поиска позиции начала/конца определённого слова в строке и т.п. |
Сообщ.
#6
,
|
|
|
Цитата bur80 @ Документации, как всегда, море Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ? <? $s = "мы делили апельсин, много наших полегло"; preg_match("/(апел[^\W]+)/i", $s, $matches); echo $matches[1]; ?> Так? |
Сообщ.
#7
,
|
|
|
Цитата bur80 @ Мне нужны примеры поиска позиции начала/конца определённого слова в строке и т.п. т.е. тибе нужен номер позиции начала и конца? |
Сообщ.
#8
,
|
|
|
Цитата т.е. тибе нужен номер позиции начала и конца? И это тоже Вообще, неплохо было бы иметь готовые примеры решения различных, наиболее типичных, задач. Ну, для самообучения естественно. Добавлено Цитата Mastilior @ Цитата bur80 @ Документации, как всегда, море Помогите составить регулярку. Скажем, есть строка "мы делили апельсин, много наших полегло". Мне нужно вывести слово, в котором содержиться строка апел, то есть в результате я должен получить слово апельсин. Как ? <? $s = "мы делили апельсин, много наших полегло"; preg_match("/(апел[^\W]+)/i", $s, $matches); echo $matches[1]; ?> Так? Да, спасибо |
Сообщ.
#9
,
|
|
|
Цитата почитай пропримеры поиска позиции начала/конца определённого слова в строке \b - соответствует границе слова(то есть точке между символом слова и символом не входящим в состав слова) \B - соответствует позиции, которая не явл. границей слова может тебе это облегчит задачу... |
Сообщ.
#10
,
|
|
|
Дж. Фридл, Регулярные выражения, библиотека программиста, 2е издание, Изд. Питер, 2003
http://unix.onanizm.ru/misc/regexp.djvu |
Сообщ.
#11
,
|
|
|
Цитата SiMM @ Дж. Фридл, Регулярные выражения, библиотека программиста, 2е издание, Изд. Питер, 2003 http://unix.onanizm.ru/misc/regexp.djvu Скачал, а что это за формат такой djvu ? Открыть бы теперь |
Сообщ.
#12
,
|
|
|
Читалку можно взять, например, здесь
DjVuWebBrowserPlugin_EN.exe - плагин к IE. DjVuSolo3.1-noncom.exe - отдельное приложение. |
Сообщ.
#13
,
|
|
|
Чтобы найти слово содержащее некоторый символ мы используем такую комбинацию:
Цитата , а что если мне нужно задать ещё одно условие, как в этом случае будет выглядеть выражение ? "/(апел[^\W]+)/i" Добавлено Ещё мне требуется наиболее полная таблица метасимволов, которые используются в регулярных выражениях Добавлено SiMM, спасибо за ссылки |
Сообщ.
#14
,
|
|
|
Цитата bur80 @ Какое?а что если мне нужно задать ещё одно условие Цитата bur80 @ Ещё мне требуется наиболее полная таблица метасимволов, которые используются в регулярных выражениях PHP Manual: Регулярные выражения в деталях - Метасимволы |
Сообщ.
#15
,
|
|
|
Цитата Какое? Мне нужно сделать что-то типа: Цитата /условие1/и/условие2/ Иными словами, как задать 2 условия в одном выражении и каким символом они должны быть разделены ? |