|
|
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Переменная содержит такой отформаченый текст: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Пытаясь получить массив писал Код: plaintext Вынуть последний пытался Код: plaintext Мог бы вставить закрывающие теги - с ними было бы проще, но хочется обойтись без этого. Читал ФАКи, мануал PHP... Пока придумываются только изощренные варианты не в один ход. И ещё: как отрицать целое слово (фрагмент)? Например, [^<lesson>] - это же группа символов, которая по идее будет отрицать и "<l>essno" ? Или нет? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 14:33 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Чтобы не выпадали блоки, видимо, надо смещение -8 (на длину "<lesson>") использовать... Подсмотрел в близкой теме. А чтоб захватить последний блок? Подозреваю, что условие должно быть типа "что-то начинающееся на <lesson>, содержащее что угодно, кроме <lesson> и до конца строки $"... Но написать пока немгу :/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 14:43 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Я не силен в рег. выражениях ПХП. Но идея такая. Первый блок - текст между <lesson> и <lesson>. Серединные блоки - текст от текущей точки до <lesson> Последний блок - текст до конца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:29 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Спасибо, но я это уже понял. Т.е. логику поиска я представляю. Не хватает опыта в составлении самих выражений :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:39 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
со смещением я тоже что-то напутал - не помогло. Так что все задачи по-прежнему актуальны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:40 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
ParanoikПытаясь получить массив писал Код: plaintext Все потому, что пользовался негодным инструментом - preg_match_all. Используй preg_split: Код: plaintext Обрати внимание - '\r\n' это досовский перевод строки. Твой текст может иметь и другой разделитель строк, тогда вместо '\r\n' подставь его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:35 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
А, кстати, можно и так: '!<lesson>\s*!'. Так даже лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 18:40 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Про назначение сплита я помнил, но не думал о нём, почему-то надеясь, что задача по зубам preg_match_all ... Я его переоценил в универсальности? :) С \r\n и \s понятно: я привел утрированный пример и в реальной задаче переводов не будет. Но суть имею в виду :) А всё-таки... Как из шаблона исключить строку? Или это меня пинками в ФАКи? :) А?... Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 20:48 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
ParanoikПро назначение сплита я помнил, но не думал о нём, почему-то надеясь, что задача по зубам preg_match_all ... Я его переоценил в универсальности? :) Для этого примера, вообще-то, достаточно explode: $result = explode( "<lesson>\r\n", $file ); А если тебе очень-очень хочется сделать это регекспом, используй lookahead/lookbehind конструкции. Но с ними php начинает ТАК тормозить, что результата на любом более-менее объемном тесте ты просто устанешь ждать. Вообще нет смысла использовать регэкспы там, где они не нужны - их использование это всегда удар по производительности. Но предсказатели в php - это вообще "что-то особенного" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 23:52 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
На phpclub.ru подсказали решение с preg_match_all: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 08:12 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
ParanoikНа phpclub.ru подсказали решение с preg_match_all: Код: plaintext (?=<lesson>) это и есть lookahead. По моим наблюдениям такие выражения очень сильно тормозат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 10:57 |
|
||
|
(PHP) Регулярное выражение, не могу сообразить
|
|||
|---|---|---|---|
|
#18+
Paranoik P> С \r\n и \s понятно: я привел утрированный пример и в реальной задаче P> переводов не будет. Но суть имею в виду :) Просто мысль.. если нет специальных разделителей, то использовать сам тег <LESSON> в качестве его, т.е. брать подстроки от "SON>" до "<LES". Если не в кассу, то извеняйте... -- Dik76 Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33046856&tid=1478345]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 447ms |

| 0 / 0 |
