使用数组通过 strpos 搜索字符串
strpos 函数通常用于定位字符串中子字符串的位置。然而,有时使用针数组同时搜索多个子字符串会很有用。
问题
不幸的是,strpos 的标准实现不允许我们这样做通过一排针。尝试这样做,如提供的示例所示,将导致不令人满意的结果。
解决方案
幸运的是,可以创建自定义函数来扩展功能strpos 并容纳针阵列。以下代码片段受 PHP 社区贡献的启发,提供了一个解决方案:
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; }
用法
要使用此函数,您可以传递 haystack 字符串、针数组和可选偏移量作为参数。例如:
$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
这将搜索字符串以查找数组中是否存在任何针。如果找到任何针,该函数将返回 true,停止进一步迭代。
以上是如何使用 PHP 高效地搜索字符串中的多个子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!