gpt4 book ai didi

php - 在 PHP 数组中搜索部分字符串?搜索值包含主题标签

转载 作者:可可西里 更新时间:2023-11-01 12:53:14 24 4
gpt4 key购买 nike

例子:

$array = array('alpha beta','beta gamma','delta phi', '#alpha phi', 'beta phi');
$searchword = 'alpha';
$results = array_filter($array, function($var) use ($searchword) { return preg_match("/\b$searchword\b/i", $var); });
print_r($results);

Array ( [0] => alpha beta [3] => #alpha phi )

我只想找到包含 #alpha 的元素,而不是 alpha

我想要的结果是Array ( [3] => #alpha phi )

但是,这不起作用:

$array = array('alpha beta','beta gamma','delta phi', '#alpha phi', 'beta phi');
$searchword = '#alpha';
$results = array_filter($array, function($var) use ($searchword) { return preg_match("/\b$searchword\b/i", $var); });
print_r($results);

Array ( )

我也试过 $searchword = preg_quote('#alpha'); 但这也不起作用。我对正则表达式不够熟悉,无法解决这个问题——一定是我遗漏了一些正则表达式规则?

注意:我不希望在数组中找到所有主题标签关键字。我想搜索特定的主题标签关键字。

来源:我使用了此处的其中一个答案: Search for PHP array element containing string

最佳答案

删除开头的\b

preg_match("/$searchword\b/i", $var);

使用\B

preg_match("/\B$searchword\b/i", $var);

为什么?

这都是关于单词边界 \b 单词 char 和非单词 char 之间的匹配,反之亦然。由于第一个字符是 #,它是一个非单词字符,并且在该字符之前存在行边界的开始。 \B 是合适的,它匹配两个非单词字符或两个单词字符。这里是行的开头,# 所以中间一定存在 \B 而不是 \b

关于php - 在 PHP 数组中搜索部分字符串?搜索值包含主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com