php strpos致命错误:使用多个if语句时调用未定义的函数

时间:2015-11-26 12:42:32

标签: php string strpos

要检查产品尺寸,我需要搜索一个简单的字符串,如:32sdfsjkndgfjkdgndkj24 020l dsfsfsd

使用strpos查找字符串中的值,以查找不同的大小。

我目前的代码是:

 if (strpos($size, "1875cl") || strpos($size, "01875l")) {
           $size = '18,75cl';
       } elseif (strpos($size, "20cl") || strpos($size, "020l") || strpos($size, "02l")) {
           $size = '20cl';
       }

问题在于我使用if语句。

第一个如果工作得很好。然后当elseif检查字符串中的另一个值时 - 也使用strpos脚本返回一个致命错误,说明函数未定义:

致命错误:在.....

中调用未定义的函数strpos()

1 个答案:

答案 0 :(得分:0)

这与你的工作方式相同,唯一可行的方法是覆盖数据或$size变量中存在错误的数据。

您可以使用$size更多地清理preg_replace( '/[^a-zA-Z0-9]/', '', $size );变量,如果您使用下面的代码,则可以使用名称保存$correctedSize变量。

$prodNames = array( '\x0D\x0D\x0D   \n\rkajshdfsajkdhaksjd1875cladsas', '۞ ۩ εїз Ƹ̵̡Ӝ̵̨̄kajshdfsajkdhaksjd1875cladsas', 'kajshdfsajkdhaksjd20clcladsas','02lkajshdfsajkdhaksjdadsas', 'kajshdfsajkdhaksjd1875cladsas', 'kajshdfsajkdhaksjd1875cladsas', 'kajshdfsajkdhaksjd20clcladsas','02lkajshdfsajkdhaksjdadsas' );

foreach ( $prodNames as $prodNameRaw ) {
    $correctedSize = 0; 
    $prodName = preg_replace( '/[^a-zA-Z0-9]/', '', $prodNameRaw );

    if ( strstr( $prodName, '1875cl' ) || strstr( $prodName, '01875l' ) ) {
        $correctedSize = '18,75cl';
    } elseif ( strstr( $prodName, '20cl' ) || strstr( $prodName, '020l' ) || strstr( $prodName, '02l' ) ) {
        $correctedSize = '20cl';
    }
}