比较PHP中的字符串

时间:2010-07-08 17:28:33

标签: php

PHP中的字符串比较似乎有点困难。我不知道是否还有其他方法可以做到。

例如说:

$t1 = "CEO";
$t2 = "Chairman";
$t3 = "Founder";

$title = "CEO, Chairman of the Board";

if (!strcmp($t1, $title)) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
} else if (!strcmp($t2, $title)) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
} else if (!strcmp($t3, $title)) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
}

这不会给出任何结果$title中包含$t1$t2字。我怎么能这样做?

7 个答案:

答案 0 :(得分:8)

完全相等strcmp()测试。您更愿意测试字符串是否包含给定的部分。在这种情况下,请使用stripos()stristr()。两者都可以使用以下方式:

if (stripos($title, $t1) === false) {
    // $title does not contain $t1
}
if (stristr($title, $t1) === false) {
    // $title does not contain $t1
}

如果您希望区分大小写比较(例如chairman不等于Chairman),请改用strpos()strstr()

答案 1 :(得分:2)

我假设您要在$t1中出现$t2$t3$title时打印该字符串:

foreach (array($t1, $t2, $t3) as $titlePart) {
    if (strpos($title, $titlePart) !== false) {
        echo $title . "<br>" . $Fname . "<br>" . $Lname . "<br>";
        break;
    }
}

答案 2 :(得分:0)

尝试在“,”上分割标​​题,并在数组的各个部分使用in_array ...或strcmp ......或者找到一个全新的更好的解决方案。

答案 3 :(得分:0)

也许这就是你想要的?

$t1 = "CEO";
$t2 = "Chairman";
$t3 = "Founder";

$title = "CEO, Chairman of the Board";

if (!is_integer(strpos($t1, $title))) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
} else if (!sis_integer(strpos($t2, $title))) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
} else if (!is_integer(strpos($t3, $title))) {
    echo $title."<br>"; echo $Fname."<br>"; echo $Lname."<br>";
}

答案 4 :(得分:0)

不确定您到底想要做什么。

如果您只是检查存在或位置,请使用strpos()

$t1 = "CEO";

$title = "CEO, Chairman of the Board";

$startposition = strpos($title, $t1);

if ($startposition === false) {
     //not found
} else {
   //found (@ index $startposition)
}

同样,不是100%确定你要从这些数据中找到/做什么,但希望这会让你朝着正确的方向前进。

答案 5 :(得分:0)

if (stripos($title, $t1) !=  false && stripos($title, $t2) !=  false && stripos($title, $t3) !=  false ) {
    echo $Fname ."<br />" . $Lname ; 
}

根据您的评论 - 这就是您想要的。如果出现t1,t2和t3 ALL,则打印出名字和姓氏。

答案 6 :(得分:0)

在搜索这样的字符串时,您可能希望使用preg_match()或strcasecmp(),因为这些可以忽略大小写。例如,strcomp()是区分大小写的,不会抓住“首席执行官,董事会主席”。