查找字符串是否包含其他字符串

时间:2014-08-25 00:31:47

标签: php

我试图找出一种方法来检测字符串是否包含其他字符串。

现在我可以像这样使用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>";
    ?>

但很明显,这不是一种首选方式。

任何人都知道更清洁的功能或解决方法吗?

3 个答案:

答案 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;
}