我试图找出一种方法来检测字符串是否包含其他字符串。
现在我可以像这样使用strpos:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.wra.net/calendar/calendar_4.ics");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$page = curl_exec($ch);
$page = explode("BEGIN:VEVENT", $page);
echo "<pre>";
for ($i=1; $page[$i] != ""; $i++) {
$res = explode("SUMMARY:", $page[$i]);
$res = explode("DESCRIPTION:", $res[1]);
if (strpos($res[0], "Gallery") !== false) {
//do nothing
} else {
//echo "BEGIN:VEVENT".$page[$i];
echo $res[0].PHP_EOL;
}
}
echo "</pre>";
?>
但很明显,这不是一种首选方式。
任何人都知道更清洁的功能或解决方法吗?
答案 0 :(得分:1)
使用false === strpos( $res[0], "Gallery" )
来测试$res[0]
中不包含&#34;图库&#34;的值。如果没有匹配项,strpos()
函数将返回false
,但如果它是字符串中的第一项,则0
将返回=== false
,因此您必须使用== false
而不仅仅false
1}},任何非if ( false === strpos( $res[0], "Gallery" ) ){
// does not contain Gallery
} else {
// does contain Gallery
}
结果都表示匹配。
{{1}}
答案 1 :(得分:1)
strpos
返回并返回表示第一次出现位置的整数。由于您使用严格的类型比较,因此不符合条件。
答案 2 :(得分:1)
为清楚起见:
function containsString($input)
{
return strpos($input) !== false;
}
function doesNotContainString($input)
{
return strpos($input) === false;
}