0
<?php
$a[0]["streamtitle"]= "SEM-VI";
$a[1]["streamtitle"]= "CE";
$a[2]["streamtitle"]= "B.E.";


$b[0]["streamtitle"] = "SEM-VI,CE,B.E.";
$b[1]["streamtitle"] = "SEM-VII,CE,B.E.";
$b[2]["streamtitle"] = "SEM-VIII,CE,B.E.";
$b[3]["streamtitle"] = "SEM-VI,EC,B.E.";
$b[4]["streamtitle"] = "SEM-VI,CE,B.E.";

$i=0;
for($i=0; $i<sizeof($b); $i++) {
    if (strstr($b[$i]["streamtitle"], $a[0]["streamtitle"]) && strstr($b[$i]["streamtitle"], $a[1]["streamtitle"]) && strstr($b[$i]["streamtitle"], $a[2]["streamtitle"]))
       print "found ".'</br>';
    else
       print "not found".'</br>';
}

?>

大家好,我正在过滤数组 $b 中的值,它的值与 $a 相同。上面的代码在一段时间内运行良好,但在我给出 SEM-V 时失败。当我拿

$a[0]["streamtitle"]= "SEM-V";
$a[1]["streamtitle"]= "CE";
$a[2]["streamtitle"]= "B.E.";

它匹配 $b 中的四个元素,因为每个字符串都包含“SEM-V”作为子字符串,CE、BE 也很常见,不管是 SEM-V、SEM-VI、SEM-VIII 等......

请建议我一些仅匹配“SEM-V”的想法....

4

1 回答 1

1

如果流标题的格式始终使用逗号作为分隔符,您可以匹配“SEM-V”而不是“SEM-V”。

其他选项包括分解流标题和检查不同部分。

$parts = explode(",", $b[1]["streamtitle"]);
if($parts[0] == $a[0]["streamtitle"]
   && $parts[1] == $a[1]["streamtitle"]
   && $parts[2] == $a[2]["streamtitle"])
{
   print "found<br />";
}
else print "not fond<br />";
于 2012-04-08T06:56:13.630 回答