例如,我有一个以下字符串
$a = "crt d a e f b";
$b = "b e a d c f";
$c = "a b c d g e";
$d = "a b c";
$e = "abcdef";
$f = "a b c d e r f t";
$g = "aabc d e f";
我只想找到我的字符串是否有"a"、"b"、"c"、"d"、"e"、"f"、"r"、"t",其中字符串不能有指定字符串以外的任何内容,并且字符串中必须有所有指定字符串。可以用空格分隔。
也许像compare($a, [ "a", "b", "c", "d", "e", "f", "r", "t" ];
这样的东西应该给我如下的输出。
$map = [ "a", "b", "c", "d", "e", "f", "r", "t" ];;
compare($a, $map); // false
compare($b, $map); // false
compare($c, $map); // false
compare($d, $map); // false
compare($e, $map); // false
compare($f, $map); // true
compare($g, $map); // false
有人能帮我解决这个问题吗?
也许您可以用字符串创建一个数组,对它们进行排序和比较。
$a = "crt d a e f b";
$b = "b e a d c f";
$c = "a b c d g e";
$d = "a b c";
$e = "abcdef";
$f = "a b c d e r f t";
$g = "aabc d e f";
$base = [ "a", "b", "c", "d", "e", "f", "r", "t" ];
var_dump(compare($a, $base)); //false
var_dump(compare($b, $base)); //false
var_dump(compare($c, $base)); //false
var_dump(compare($d, $base)); //false
var_dump(compare($e, $base)); //false
var_dump(compare($f, $base)); //true
var_dump(compare($g, $base)); //false
function compare($a, $map) {
$stringParts = explode(' ', $a);
sort($stringParts);
sort($map);
return $stringParts === $map;
}
<?php
$a = "c d a e f b";
$b = "b e a d c f";
$c = "a b c d g e";
$d = "a b c";
$e = "abcdef";
$f = "a b c d e f g";
$g = "aabc d e f";
$array=[ "a", "b", "c", "d", "e", "f" ];
$length=strlen(str_replace(' ','',$e));
$flag=0;
foreach($array as $data){
if (strpos($e, $data) !== false) {
$flag=$flag+1;
}
}
if($flag<>$length){
echo "problem";
}
else{
echo "working";
}
以下是您所要求的示例代码。如果您更改此处的字符串$length=strlen(str_replace(' ','',$e));
在这里
if (strpos($e, $data) !== false) {
你将自己检查它是否工作。我建议您将这些字符串放入一个数组中,并对其进行更动态的解析,但这取决于您和您的输入。