在以下代码中:
// 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()识别一行的开头,这里...
if ( stripos($line, "<beginning of a line>" . $value . "=") || stripos($line, " " . $value . "=") !== false)...but不知道这是否可行。有没有一种使用stripos的方法,或者可能有另一个函数可以做得更好。我最初选择stripos是因为数组非常大,并且stripos应该是最快的/最少的资源密集型。
谢谢。
发布于 2013-07-22 22:51:09
stripos返回找到匹配开始的位置(以整数形式),如果未找到匹配,则返回false。只需检查是否找到匹配的结果,从位置0(字符串的开头)开始。
if ( stripos($line, $value . "=") === 0 || stripos($line, " " . $value . "=") !== false)其中,stripos($line, $value . "=")的结果必须为0,并且具有相同类型的0,整数。这就是===所做的。为什么不直接使用==
解释
如果干草堆不包含针,该函数将返回false。转换为整数时,false等于0。换句话说,“无匹配”会给出与“字符串开头的匹配”相同的结果。我们不想这样。
===检查是否相等,包括类型检查。
0 == false:相同的值。TRUE!0 === false:相同的值,TR...但是,嘿,不同的类型: FALSE!结论:使用===运算符代替==运算符是很重要的。
https://stackoverflow.com/questions/17790634
复制相似问题