任何人都可以向我解释这个preg_match()函数的作用吗?

时间:2011-03-21 19:08:25

标签: php function methods

所以我正在阅读这本关于PHP的面向对象编程的书,在一个示例方法中,作者正在检查数据类型,我遇到了这个函数:

//class AddressManager...
function outputAddresses( $resolve ) {
  if ( is_string( $resolve ) ) {
    $resolve =
      ( preg_match("/false|no|off/i", $resolve ) )?
      false:true;
  }
  // ...
}

谁能告诉我它的目的是什么?这些属性并不重要,但它是一种设计用于将字符串转换为布尔值的方法(我认为)。

3 个答案:

答案 0 :(得分:2)

preg_match本身不会将字符串转换为布尔值,它是正则表达式匹配函数。你所拥有的是一个三元表达式,几乎可以对此进行评估:

class AddressManager
... 
    function outputAddresses( $resolve ) 
    { 
    if ( is_string( $resolve ) ) 
    { 
      if (preg_match("/false|no|off/i", $resolve))
      {
         $resolve = false;
      } else {
         $resolve = true;
      }
      // $resolve = ( preg_match("/false|no|off/i", $resolve ) )? false:true; 
    } 
// ... 
}

答案 1 :(得分:0)

如果变量$ resolve以不敏感的方式包含“false”或“no”或“off”(忽略大小写),则返回FALSE。否则返回TRUE。

看起来像一个简单的用户输入检查器(而不是一个非常好的)。例如,如果您输入“nothing”或“now”,会发生什么?

答案 2 :(得分:0)

以上的伪代码。

if( $resolve equals false  or no or off)
then 
    set  $resolve as false
else
    set  $resolve as true

? (三元运算符)只是替换上面的代码行。这就是幕后发生的事情。

http://en.wikipedia.org/wiki/Ternary_operation