2015-07-17 4 views
3

Мне нужно сделать php eval для выражения, например, между, содержит и match(). Я сделал для других логических операторов и его работоспособность.Eval выражение для оценки match(), объединение, между

E.g.

echo eval("return ('1'==1&&'en-au'!='en-us');"); 

Но я должен оценить это выражение:

echo eval("return ('xxxx.match(xxx) != null');"); 

Который всегда возвращает истину. Может кто-то объяснить, как оценивать этот тип выражений.

+0

Если бы вы могли опубликовать фактический код для xxx.match (xxx), это поможет. – mseifert

+0

{(EFT.match ("F"))! = Null} это фактический код – shyamkarthick

+0

Является ли match() внешней функцией? А что такое EFT? Я не признаю EFT.match() как php-код. – mseifert

ответ

1

Для начала, вот пример того, как оценить preg_match()

$test = "abFc"; 
echo eval("return preg_match('#F#', '$test');"); 

Этот выход: 1

Синтаксис быть 'xxxx.match(xxx) != null' не действует синтаксис PHP, и поэтому вы не можете использовать eval() на него непосредственно - он должен быть действительным php. В вашем примере javascript и xxx являются переменными. Их нужно переписать, чтобы они могли оценить в php. В моем примере я переписал заявление на eval("return (match('$xxxx', '$xxx') !== null);")

Вы можете написать функцию, передать переменную из таблицы и выполнить любую оценку, которая вам нужна, чтобы выполнить столько сравнений и строк кода, сколько потребуется.

Например:

$xxxx = "abFc"; 
$xxx = "F"; 

$eval = eval("return (match('$xxxx', '$xxx') !== null);"); 
if ($eval) { 
    echo "true"; 
} else { 
    echo "false"; 
} 


function match($string, $regex){ 
    // match: executes a search for a match in a string. It returns an array of information or null on a mismatch.  

    preg_match_all('#' . $regex . '#', $string, $amatch); 
    if(count($amatch[0]) > 0){ 
     return $amatch[0]; 
    } else { 
     return null; 
    } 
} 

Кроме того, прочитайте предупреждения, касающиеся использования eval() Вы должны убедиться, что данные вы передаете ему известно, чтобы быть безопасным.

+0

echo eval ("return preg_match ('# F #', '$ test');"); который работает, но как я могу проверить логические операторы ==,! = eval ("return ('xxxx.match (xxx)! = null');"); как это – shyamkarthick

+0

Я обновил код с тем, что, как я полагаю, вы просите, переводя синтаксис js в php с переменными xxxx и xxx и оценивая для! ==. Вы можете просто заменить == для! ==, если хотите. Прокомментируйте, если я пропустил ваш вопрос. – mseifert

+0

Пожалуйста, перечитайте мой ответ - я прокомментировал ваш запрос, чтобы оценить 'eval (« return ('xxxx.match (xxx)! = Null'); ");' поскольку это неверный синтаксис php – mseifert

 Смежные вопросы

  • Нет связанных вопросов^_^