在PHP
regex
中,我尝试提出一种在不同情况下查找字符串的解决方案。我有一个包含单词的字符串,
$animals = "Elephant Horse Cow";
现在我想根据某些原因使用preg_match()
而非strpos()
来制作一些案例。我有一个包含不同字符串的数组,我想迭代我的数组来查找案例。我的搜索不区分大小写。
以下是我的案例。
1)所有动物名称都以不同的顺序出现在字符串中,例如
$my_case1 = "Horse Elephant Cow";
2)任何动物都会出现在一个字符串中,但不会出现在案例1中,如
$my_case2 = "Horse Elephant";
3)之后任何动物都会出现复数或额外的字符串,如
$my_case3 = "Horses";
我的动物群就像,
$all_animals = ["Horses Cows", "Elephant", "Goats", "Goat"];
我使用strpos()
制作了案例,但它们不可靠。
EDIT1:我的代码
function mySearch($name,$animals)
{
$my_case1 = array();
$my_case2 = array();
$my_case3 = array();
$all_cases = [];
$a = explode(' ', $name);
foreach($a as $key) {
foreach($animals as $animal) {
if ($animal !== $key)
{
if ((strpos( strtolower($key), str_replace(' ', '', strtolower($animal)) ) !== FALSE) && (strpos( strtolower($key), str_replace(' ', '', strtolower($animal)))) == 0)
{
echo $animal. "<br>";
}
else if ((strpos( $key, substr( $animal, 0, -1) ) !== FALSE) && (strpos( $key, $animal ) !== 0) )
{
echo $animal. "<br>";
}
}
if (strpos(strtolower($animal), strtolower($key)) !== false) {
if (strpos($animal, $key) !== false) {
if ($animal !== $key)
{
echo $animal. "<br>";
}
} else
{
echo $animal. "<br>";
}
}
}
}
}
return $all_cases; // empty as testing is directing my echo
}