2010-07-08 90 views
-1

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。我怎样才能做到这一点?

+2

你想达到什么目的? – sarsnake 2010-07-08 17:33:47

+0

每个人都困惑?我不知道为什么好,让我解释一下。 $ t1,$ t2,$ t3是常数。 $ titile的价值不断变化说它可以有些时候是“首席执行官”,“创始人”,“主席”或有时候它可以是“编辑”,“开发人员”等。所以我想要的是如果$ title包含contants $ t1, $ t2和$ t3然后它应该给出名字和姓氏变量$ Fname和$ Lname的详细信息不包括在这个代码 – mathew 2010-07-08 18:04:32

+0

大家都很困惑,因为从代码中不清楚你想要实现什么 – sarsnake 2010-07-08 18:27:11

回答

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()代替。

+0

我会第二strpos() – sarsnake 2010-07-08 17:37:05

0

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

2

我假设你想打印字符串,如果任一$t1$t2,发生在$title$t3

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

不知道你到底在试图做什么。

如果你只是检查所有脑干或位置使用strpos()

$t1 = "CEO"; 

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

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

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

同样,不是100%肯定你想怎么找/从这些数据做什么,但我希望那将让你在正确的方向。

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

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

0

在搜索这样的字符串时,您可能想要使用preg_match()或strcasecmp(),因为这些可以忽略大小写。 strcomp()区分大小写,并且不会捕获“CEO,董事会主席”等。