viv*_*l04 5 php ruby regex preg-match
我是一个Rubyist试图在PHP中实现我的一些代码而无法获得这个特定def的等效PHP代码.任何人都可以帮助我.谢谢你提前.
def check_condition(str)
str =~ SOME_REGEX
end
Run Code Online (Sandbox Code Playgroud)
hek*_*mgl 10
在PHP中它看起来像:
function check_condition($str) {
return preg_match(SOME_REGEX, $str);
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,与其他语言不同,PHP中没有正则表达式匹配运算符.你必须调用一个函数.一般情况下,请遵循preg_match()所谓的perl兼容常规表达(preg)的手册和手册页.
额外的东西.在阅读了preg_match的手册页后,您知道该方法返回一个整数,即找到的匹配数.由于该方法在第一次匹配后返回,因此只能是0或1.从PHP的松散类型系统开始,这将有利于在松散的比较中使用它,例如:
if(check_condition($str)) { ....
if(check_condition($str) == true) { ...
Run Code Online (Sandbox Code Playgroud)
但它不会在严格的比较中起作用:
if(check_condition($str) === true) { ...
Run Code Online (Sandbox Code Playgroud)
因此,转换preg_match的返回值是个好主意:
function check_condition($str) {
return (boolean) preg_match(SOME_REGEX, $str);
}
Run Code Online (Sandbox Code Playgroud)
更新
我已经考虑了一下我的最后一个建议,我发现这个问题.preg_match()如果一切正常,则返回一个整数,如果FALSE发生错误则返回boolean .例如,由于正则表达式模式中的语法错误.因此,如果你只是投射到,你将不会意识到错误boolean.我会exceptions用来表明发生了错误:
function check_condition($str) {
$ret = preg_match(SOME_REGEX, $str);
if($ret === FALSE) {
$error = error_get_last();
throw new Exception($error['message']);
}
return (boolean) $ret;
}
Run Code Online (Sandbox Code Playgroud)
看看preg_match:
if (preg_match('/regex/', $string) {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
不是preg_match吗?
function check_condition($str) {
return preg_match(SOME_REGEX,$str);
}
Run Code Online (Sandbox Code Playgroud)