|
|
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
Был сегодня удивлен при составлении нового рега. :) Оказывается, если регулярное выражение (паттерн) заключено в двойные кавычки и, например, требуется в шаблоне выделить переменную в виде $foo, то необходимо использовать двойное экранирование - \\$(.*). Теперь на примере. Требуется пропарсить ниже указанный файл и получить в нем все пары KЛЮЧ => ЗНАЧЕНИЕ. Сам файл (config.php): Код: plaintext 1. 2. 3. 4. 5. 6. Скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Хотя в с другой стороны все объяснимо - PHP при разборе строки шаблона "/\\$(.*)\s=\s\'(.*)\';/siU" анализирует ее на наличие переменных, т.к. строка заключена в двойные кавычки. Для того, что избежать этого используется спец. символ \. Но это пока еще строка, а если рассматривать это как регулярное выражение, то \ является спец. символом, который в свою очередь тоже следует экранировать. Как видите, если записать рег в одинарных кавычках, то двойного \\ уже не требуется. Код: plaintext 1. 2. 3. Вот такая занятная вещь. P.S. Скорее всего, это уже и написано где-то, но пока ссылку не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2005, 13:36 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
Регулярные выражения тут абсолютно не при чём, а кого-то нужно послать читать FAQ: debug + manual hint: echo "/\\$(.*)\s=\s\'(.*)\';/siU" + echo '/\$(.*)\s=\s\'(.*)\';/siU' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2005, 13:43 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
2 * Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2005, 14:32 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
Berkut...все... Бред какой то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2005, 15:23 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
VERS Berkut...все... Бред какой то Если вы это утверждаете, то по крайней мере аргументируйте то, о чем говорите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2005, 16:07 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
Как можно указать preg_match искать в строке любые символы за исключением определенной последовательности? Есть строка: [npc=123]npc[npc]blablalba[/npc] bbbbbb [npc]bbbb[/npc] Есть шаблон: \[npc(=(\s))*\](.*)\[/npc\] Необходимо, чтобы он выдал такой массив: 0=>[npc=123]npc/[npc]blablalba[/npc] 1=>=123 2=>123 3=>npc[npc]blablalba Я знаю о конструкции .[^<символы>]*, но в моем случае нужна определенная комбинация [/npc], в любых других случаях, строка должна включать все. Помогите, кто, чем сможет, а еще лучше, где почитать о синтаксисе регулярных выражений. Ибо в хелпах ПХП вообще мало путного написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2005, 09:21 |
|
||
|
(PHP) Тонкости работы с регулярными выражениями
|
|||
|---|---|---|---|
|
#18+
zarusjamerИбо в хелпах ПХП вообще мало путного написано. PHP FAQ: Регулярные выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2005, 10:23 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=451&tid=1477356]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 322ms |

| 0 / 0 |
