Preg_match используя массив? - PullRequest
3 голосов
/ 03 мая 2011

Правильное использование: /,,([,]+)?|^,|,$|\b,\b|\s,/

$comma[0] = '/,,([,]+)?/';  
            $comma[1] = '/^,/';     
            $comma[2] = '/,$/';
            $comma[3] = '/\b,\b/';  
            $comma[4] = '/\s,/';    

$analyst = preg_match($comma, $_POST['analyst']) 
    ? mysql_real_escape_string($_POST['analyst']) : NULL;

Я пытаюсь определить запятые из пользовательского ввода, каждое регулярное выражение определено правильно, но я не понимаю, почему оно не передает их воператор if.

Edit:

если я изменю это:

$analyst = preg_match('test', $_POST['analyst']) 
    ? mysql_real_escape_string($_POST['analyst']) : NULL;

, тогда это работает, это не имеет смысла.

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

preg_match () не принимает массивы в качестве аргументов, только строки.

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

http://php.net/manual/en/function.preg-match.php

1 голос
/ 03 мая 2011

preg_match принять первый параметр в виде строки, и вы передаете массив.

...