首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用stripos()匹配干草堆线开始处的针。

使用stripos()匹配干草堆线开始处的针。
EN

Stack Overflow用户
提问于 2013-07-22 22:49:17
回答 1查看 87关注 0票数 0

在以下代码中:

代码语言:javascript
复制
// array source elements are formatted like...
// string=string 
// string string=string

foreach ($matches[0] as $value){ 

    $titleText = array(); // Store results into an array.

    foreach ($lines as $line) { // Read the lines in the dictionary file 

        if ( stripos($line, "<beginning of a line>" . $value . "=") || stripos($line, " " . $value . "=") !== false){ // Found string in array.
            list($field1, $field2) = explode('=', $line);
            array_push($titleText, "$field1 > $field2"); // Store all finds in array before outputting.
        } 

    }

echo "Found " . count($titleText) . " instances of " . $value . "\n";

print_r($titleText);

}

我正在尝试让stripos()识别一行的开头,这里...

代码语言:javascript
复制
if ( stripos($line, "<beginning of a line>" . $value . "=") || stripos($line, " " . $value . "=") !== false)

...but不知道这是否可行。有没有一种使用stripos的方法,或者可能有另一个函数可以做得更好。我最初选择stripos是因为数组非常大,并且stripos应该是最快的/最少的资源密集型。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-22 22:51:09

stripos返回找到匹配开始的位置(以整数形式),如果未找到匹配,则返回false。只需检查是否找到匹配的结果,从位置0(字符串的开头)开始。

代码语言:javascript
复制
if ( stripos($line, $value . "=") === 0 || stripos($line, " " . $value . "=") !== false)

其中,stripos($line, $value . "=")的结果必须为0,并且具有相同类型的0,整数。这就是===所做的。为什么不直接使用==

解释

如果干草堆不包含针,该函数将返回false。转换为整数时,false等于0。换句话说,“无匹配”会给出与“字符串开头的匹配”相同的结果。我们不想这样。

===检查是否相等,包括类型检查。

  • 0 == false:相同的值。TRUE!
  • 0 === false:相同的值,TR...但是,嘿,不同的类型: FALSE!

结论:使用===运算符代替==运算符是很重要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17790634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档