2010-07-08 87 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,董事會主席」等。