【问题标题】:php strpos Fatal error: Call to undefined function when using more than one if statementphp strpos 致命错误:使用多个 if 语句时调用未定义函数
【发布时间】:2016-02-29 13:45:12
【问题描述】:

要检查产品尺寸,我需要搜索一个简单的字符串,例如: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 脚本返回一个致命错误,说明该函数未定义:

致命错误:在.....中调用未定义的函数 strpos()

【问题讨论】:

  • 我相信 if 语句应该先声明然后 { 用于执行接受的语句。 :)
  • 仔细阅读有关 strpos() 的文档,因为大字符串开头的搜索字符串不会像您期望的那样运行
  • 你能在开始使用 strpos 之前die$size 的值吗?
  • die of $size 没有返回任何内容,但是在打印值时,我收到了产品名称,例如:32sdfsjkndgfjkdgndkj24020ldsfsfsd
  • 你到底想做什么,这段代码在这里是完全正常的。当找到 1875cl 时,尺寸为 18,75cl。你可以试试strstr来解决020l排在第一位的问题吗?当已经找到 1875l 或另一个产品时,“然后当 elseif 正在检查字符串中的另一个值时”是相同的字符串

标签: php string strpos


【解决方案1】:

这行得通,和你的一样行得通,唯一可能的破坏方式是数据被覆盖或$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';
    }
}

【讨论】:

  • 每个可能结果的大小变量永远不会为空,并且总是被清理为只有字母和数字的完美字符串。
  • 在打印 var 转储时,我已经查看了所有可能结果的字符串。但是,我会尝试您的解决方案,但我相信它运行了太多的 pregreoplace 循环。我会回来的。
  • 完美。有了你的解决方案,我让它工作了。仍然想知道为什么会出现这个错误......嗯。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-02-20
  • 2014-07-21
  • 2016-07-02
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多