如何使用数组在字符串中搜索多个模式
strpos 函数是一个强大的工具,用于在字符串中搜索特定子字符串细绳。但是,它一次只能搜索一个模式。如果您需要检查字符串是否包含任何模式列表怎么办?
考虑以下示例:
$find_letters = ['a', 'c', 'd']; $string = 'abcdefg';
如果我们尝试使用以下命令在字符串中搜索字母数组strpos,它不会工作。这是因为 strpos 需要一个字符串作为其第二个参数,而不是一个数组。
使用 strpos 创建一个用于数组搜索的函数
为了解决这个问题,我们可以创建一个自定义函数,它接受模式数组和要搜索的字符串。该函数将迭代数组,为每个模式调用 strpos,并返回找到的第一个匹配的位置:
function strposa(string $haystack, array $needles, int $offset = 0): bool { foreach ($needles as $needle) { if (strpos($haystack, $needle, $offset) !== false) { return true; // stop on first true result } } return false; }
此函数可以按如下方式使用:
$string = 'This string contains word "cheese" and "tea".'; $array = ['burger', 'melon', 'cheese', 'milk']; var_dump(strposa($string, $array)); // will return true, since "cheese" has been found
结论
通过创建一个包装 strpos 功能的自定义函数,我们现在可以有效地搜索字符串使用数组的多个模式。该技术可用于多种场景,例如验证用户输入或执行文本分析。
以上是如何在 PHP 中使用数组高效地搜索字符串中的多种模式?的详细内容。更多信息请关注PHP中文网其他相关文章!