вот такая сложная задача стоит, не знаю как сделать, помогите пожалуйста. Надо бы preg_match'ем проверять строку на такую маску: сначала идёт $, затем первый символ только англ буквы или _, затем буквы, цифры или _, затем идёт запятая с пробелом и всё повторяется заного... напрмер: $abc, $_gg, и т.д... Ну в общем думаю мысль ясна
я написал Код (Text): preg_match( "~\$[a-zA-Z_][a-zA-Z0-9_]*(?:,\s\$[a-zA-Z_][a-zA-Z0-9_]*)+~i", $vxpr ) и строка Код (Text): $total, $names, $link, $txt не проходит
почему у меня проходит? что я делаю не так? PHP: <?php $reg = '~\$[a-z_][a-z0-9_]*(?:,\s\$[a-z_][a-z0-9_]*)+~i'; $str = '$total, $names, $link, $txt'; print preg_match($reg, $str) ? 'yup' : 'nope'; // output: yup ?>
хех прошу прощения а вот строка Код (Text): $77total, $:names, $link, $txt по идее не должна проходить, а проходит! о_О
а как же сделать чтобы было чётко по правилу? чтобы этому правилу подчинялись все вводимые переменные, а не хотя бы одна из всех?
сам я думал сделать так: PHP: <?php $vxpr = explode(", ", $vxpr); For ($i = 0; ; $i++) { if ( !preg_match( "/($[a-zA-Z_][a-zA-Z0-9_\=\'\"].*)/", $vxpr ) ) { $ADMIN->error("фиг тебе"); } } $vxpr = implode(", ", $vxpr); ?> но код не хочет нормально работать. и как записать '=' не знаю
ну как какие... в форму человек должен вбивать так называемые "входящие переменные" вида $var или $var="labyda". Причём если их несколько то они должны разделяться запятой. Я это хочу сделать чтобы всякую чушь не смогли вписать. stas_t, подскаи ты как тут лучше сделать
здравствуйте, уважаемый EDG_aka_Dima. вас приветствует робот учётной записи stas_t. мои настройки не позволяют пропускать к хозяину сообщения, не прошедшие лингвистический фильтр. ваше сообщение нарушает следующие правила: 1. содержит грамматические и синтаксические ошибки 2. просьба без ярко выраженного волшебного слова 3. обращение на "ты" к незнакомому человеку требуется переформулировать запрос
Прошу прощения, премногоуважаемый stas_t Помогите мне пожалуйста разобраться в этой сложной (для меня) ситуации. :roll: Надеюсь, что на английском языке копия не нужна...
EDG_aka_Dima да о чём речь, дарагой! как два байта переслать! PHP: <?php $line = '$var1, $var2, $var3="$v5", $var4="678"'; $var = '(\$[A-Za-z_]\w*(?:\s*=\s*"[^"]*")?)'; if (preg_match ("/^$var(?:,\\s*$var)*$/", $line)) { $res = preg_match_all ("/$var/" , $line , $matches ); print_r ($matches); } ?> здесь значение внутри кавычек определяется как "любые символы кроме двойной кавычки". можно и экранированную кавычку позволить, но это уже из области высших сфер (в смысле, rtfm) в результате получите распарсенную на переменные строку
Огромнейшее спасибо Вам, stas_t значит [^"] разрешает всё кроме " ... если написать [A-Za-z0-9_] то... так, ясно и в конце получается массив... а implode его что-то не хочет собирать в одну строку что делать?
А подскажите, как в preg_match'е можно делать сравнение текста не учитывая регистр? вот например как тут сделать? Код (Text): preg_match("/<(div|table|tr|td|th|a)/i", $text) и что означает i в конце?
Подскажите мне пожалуйста. Решил сам сделать выделение синтаксиса html. Т.е. берётся код, преобразовывается как нада и выводится. Конечно есть разные готовые, но некоторые глючные + сам хочу сделать Ток вот у меня не получается. Как обозначить, что именно тот элемент, который будет выделояться, находится именно между скобками < и > ?