在数组中搜索字符串的一部分

时间:2012-02-11 04:10:14

标签: php arrays search substring

我已经在网上试了这么多帖子......

我正在将一个小搜索功能集成到php脚本中....

我尝试了很多脚本,包括in_array(仅适用于完全匹配)和array_search

似乎没有任何作用......

我有一个脚本,用于创建一个带有文件名的数组(全部格式为“Random-Name-1.ext”) 但是脚本会删除文件扩展名,只留下文件名....

所有文件名都是一字一句地与-

分开

所有单词都有首字母大写....

数组名为$files1;

搜索字符串名为$search_string;

我正在寻找的是foreach循环的行,以检查搜索字符串是否包含在每个数组值的任何部分中,如果是,则将完整的数组值放入另一个名为{{1}的数组中}

作为我的脚本分页的下一部分需要数组$search_results来回显每个文件名并在每页显示10个....

希望这是足够的信息,我已经工作了很长时间并绞尽脑汁试图找到正确的代码....

提前致谢

.......... ...........

EDIT .....

....... ........

让脚本使用preg_grep .....但我现在有一个小问题......

搜索代码之前的脚本旨在获取搜索页面的网址q = {search string}

然后修剪这个以便我只将serach字符串作为变量.....

我使用str_replace来改变页面网址

$search_results

到{search-string}

这很好,但是将结果分页为每页10个的脚本会将?page = 2添加到网址....

所以当我点击第2页时,str_replace更改网址到搜索字符串现在不起作用,因为第2页的新页面网址是

/games-search?q={search-string}

我一直在尝试做另一个str_replace来将连续的页面网址更改为仅搜索字符串,但我正在使用正则表达式来定义页码.....

页码从1到大约50(从不超过99,所以2位数就足以匹配....

我今天一遍又一遍地尝试让这个正则表达式正确但我不确定我是否正确的方式......

这是我最近的努力......

/games-search?page=2&q={search-string}

这就是我试图用“”取代(例如,什么都没有)

因为我只需要&之后的数据。 url中的字符......如果url甚至包含这个(例如,当url不包含&字符时,第一页 - 如果url不包含&字符,我不希望它修改,因为我已经有我需要的数据)

再次感谢有人可以提供帮助

决定不对每个搜索的结果进行分页,因为它永远不会超过15个结果.....这很好,但我要实现一个4个字符的miminum搜索长度,所以它不会带来500个字母A的结果:)

1 个答案:

答案 0 :(得分:3)

在数组中搜索子字符串匹配? preg_grep

然后执行类似

的操作
$search_results = ...;
$paginated = array();
for ($i = 0; $i < count($search_results); $i++)
{
    if ($i % 10 == 0) $paginated[$i + 1] = array();
    $paginated[$i][] = $search_results[$i + 1];
}

然后print_r那个数组,你会发现你已经有了一些容易使用的东西。