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
字。我怎么能这样做?
答案 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
}
答案 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()是区分大小写的,不会抓住“首席执行官,董事会主席”。