#1 27.09.06 18:35
Регулярные выражения + ПЫХ = вопрос
<?php
$d="INSERT INTO PlaceholderInfo(PlaceholderInfoID, MsgClassName, Placeholder, Description, Sample, ListPrefix, UserArc,
DateArc )
VALUES (5,'Trouble Ticket Notification','Ticket_Level_Description','General ticketinfo : Description of ticket Support
Level','Front Level of Support',NULL,0,0);";
ereg ('VALUES\s\([\d]+,'([\w\s\d]+\)','[\w\s\d]+','([\w\s\d\:]+)', $d, $regs);
echo "$regs[1] $regs[0]";
//echo $d;
?>
Кто-нить может объяснить, почему эта [censored] не работает? Регулярное выражение абсолютно корректно, проверено в Espresso. Цель - вытащить второй и четвертый параметр строки вальюз. Думается, дело в экранировании, но сам допереть никак не могу.
Offline
#3 27.09.06 22:22
Re: Регулярные выражения + ПЫХ = вопрос
ereg неправильно воспринимает регулярное выражение
Offline
#6 28.09.06 14:30
Re: Регулярные выражения + ПЫХ = вопрос
что непонятно еще?
Есть правильно регулярное выражение, есть функция, которой передается в качестве параметров само выражение, строка к которой прикладывать и массив куда спихивать результаты. После вычисления ereg возвращает пустые значения. А по идее должна возвращать два элемента из строки. Остальной код корректный. Значит, вероятно, проблема в том, как передается регулярное выражение в функцию. Отюда и вопрос - что не так. Еще разжевывать?
Offline
#9 29.09.06 18:41
Re: Регулярные выражения + ПЫХ = вопрос
о, кстати да. Щаз посмотрим, мб из-за этого.
Offline
#10 17.10.06 13:31
Re: Регулярные выражения + ПЫХ = вопрос
В общем, на случай если еще кто-то споткнется на этом же. Делюсь опытом. Проблема в исходном коде в самой функции ereg. Она не поддерживает параметры \w, \s, \d. Выход - использовать ф-ю preg-match или видоизменить выражение так, чтобы оно не содержало оначенных символов. Ниже - два верных варианта соответственно.
preg_match('%VALUES\s\(\d+,\'([\w\s\d]+)\',\'[\w\s\d]+\',\'([\w\s\d\:]+)%', $d, $regs);
ereg ("VALUES[^\']+\'([^\']+).{3}[^\']+.{3}([^\']+)", $d, $regs);
Offline

