PHP: 如何修复此代码以使其正常工作?
PHP: How can this code be fixed to work correctly?
考虑以下代码:
$str1 = 'yahoo';
$str2 = 'google';
if (strpos($str1,$str2)) {
echo "\"" . $str1 . "\" contains \"" . $str2 . "\"";
} else {
echo "\"" . $str1 . "\" does not contain \"" . $str2 . "\"";
}
输出将是:
"yahoo" 不包含 "google" ,为什么?如何修复此代码以使其正常工作?
试图理解第一个问题link
哦,你举错词例了
如果你有单词 "yababababa" 和 "yaba" 它是不同的。
strpos returns 子串在字符串中的位置,所以如果子串开始于父词的开头,它 returns 0,在简单条件下 if (strpos($str1,$str2)
表示假,它说那里"yababababa".
中没有 "yaba"
您还必须检查来自 strpos 的 return 值的类型 - 它必须是布尔值 false/true。
if (strpos($str1,$str2) !== false)
考虑以下代码:
$str1 = 'yahoo';
$str2 = 'google';
if (strpos($str1,$str2)) {
echo "\"" . $str1 . "\" contains \"" . $str2 . "\"";
} else {
echo "\"" . $str1 . "\" does not contain \"" . $str2 . "\"";
}
输出将是:
"yahoo" 不包含 "google" ,为什么?如何修复此代码以使其正常工作?
试图理解第一个问题link
哦,你举错词例了
如果你有单词 "yababababa" 和 "yaba" 它是不同的。
strpos returns 子串在字符串中的位置,所以如果子串开始于父词的开头,它 returns 0,在简单条件下 if (strpos($str1,$str2)
表示假,它说那里"yababababa".
您还必须检查来自 strpos 的 return 值的类型 - 它必须是布尔值 false/true。
if (strpos($str1,$str2) !== false)