php strpos Fatal error: Call to undefined function when using more than one if statement

php strpos Fatal error: Call to undefined function when using more than one if statement

要检查产品尺寸,我需要搜索一个简单的字符串,例如:32sdfsjkndgfjkdgndkj24020ldsfsfsd

为了在字符串中查找值,我使用 strpos 来查找不同的大小。

我当前的代码是:

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

问题是当我使用 if 语句时。

第一个 if 运行良好。然后当 elseif 检查字符串中的另一个值时 - 也使用 strpos 脚本 returns 一个致命错误,指出该函数未定义:

致命错误:在 .....

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

这行得通,和你的一样行得通,它唯一可能中断的方法是数据被覆盖或 $size 变量中的数据有误。

您可以使用 preg_replace( '/[^a-zA-Z0-9]/', '', $size ); 进一步清理 $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';
    }
}