我使用下面的代码通过php检查某些字符的存在,并且工作正常。
使用以下代码,我可以检查字符 a 是否存在于变量中并且可以正常工作。
$mystring = 'my food is okay. its delicious';
$findme = 'a';
$pos = strpos($mystring, $findme);
if ($pos !== false) {
echo 'data found';
}
这是我的问题:我需要检查是否还存在多个字符,例如 m,e,s 等。有关如何实现此目标的任何想法。>
答案 0 :(得分:2)
执行此操作的方法很多,从使用多个strpos
到在str_replace
之后进行比较。在这里,我们可以将字符串拆分为一个数组,然后计算与另一个数组的交集:
$mystring = 'my food is okay. its delicious';
$findme = ['m', 'e', 's'];
检查数组中的任何字符:
if(array_intersect($findme, str_split($mystring))) {
echo "1 or more found";
}
检查数组中的所有字符:
if(array_intersect($findme, str_split($mystring)) == $findme) {
echo "all found";
}
有趣的是,通过回调运行数组,并根据其是否在字符串中进行过滤。这将检查ANY:
if(array_filter($findme, function($v) use($mystring) {
return strpos($mystring, $v) !== false;
}))
{
echo "1 or more found";
}
这将检查所有内容:
if(array_filter($findme, function($v) use($mystring) {
return strpos($mystring, $v) !== false;
}) == $findme)
{
echo "all found";
}
答案 1 :(得分:2)
另一种方法是使用trim
。
$mystring = 'my food is okay. its delicious';
$findme = 'ames';
$any = trim($findme, $mystring) != $findme;
$all = !trim($findme, $mystring);
答案 2 :(得分:0)
此功能将为您解决问题:
/**
* Takes an array of needles and searches a given string to return all
* needles found in the string. The needles can be words, characters,
* numbers etc.
*
* @param array $needles
* @param string $haystack
* @return array|null
*/
function searchString(array $needles, string $haystack): ?array
{
$itemsFound = [];
foreach($needles as $needle) {
if (strpos($haystack, $needle) !== false) {
$itemsFound[] = $needle;
}
}
return $itemsFound;
}