Поиск части строки в массиве - PullRequest
0 голосов
/ 11 февраля 2012

Я перебрал столько сообщений в Интернете, пытаясь отсортировать это ....

Я интегрирую небольшую функцию поиска в скрипт php ....

Я пробовал много скриптов, включая in_array (работает только для полного соответствия) и array_search

и, кажется, ничего не работает ....

У меня есть скрипт, который создает массив с именами файлов (все в формате "Random-Name-1.ext") но скрипт удаляет расширение файла, просто оставляя имена файлов ....

все имена файлов разделены слово за словом с -

все слова имеют заглавную букву ....

массив называется $files1;

строка поиска называется $search_string;

то, что я искал, было бы вдоль строк цикла foreach, чтобы проверить, содержится ли строка поиска в какой-либо части каждого значения массива, и если это так, поместите полное значение массива в другой массив с именем $search_results

так как следующей части моего скрипта для разбивки на страницы требуется массив $search_results, чтобы отобразить каждое из имен файлов и отобразить их по 10 на страницу ....

надеюсь, что этой информации достаточно, я работал над ней целую вечность и ломал голову, пытаясь найти правильный код ....

заранее спасибо

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

EDIT .....

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

получил скрипт, работающий с preg_grep ..... но теперь у меня небольшая проблема ....

скрипт перед поисковым кодом предназначен для получения URL страницы поиска с q = {строка поиска}

и затем обрежьте это так, чтобы я просто использовал строку поиска в качестве переменной .....

Я использую str_replace, чтобы изменить URL страницы с

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

to {search-string}

это прекрасно, но скрипт для разбивки результатов по 10 на страницу добавляет? Page = 2 к URL-адресу ....

, поэтому, когда я щелкаю страницу 2, str_replace для изменения URL-адреса на строку поиска теперь не работает, так как новый URL-адрес страницы 2 -

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

Я пытался сделать еще один str_replace, чтобы изменить последовательные URL страниц на просто строку поиска, но у меня возникли проблемы с регулярным выражением для определения номера страницы .....

номера страниц варьируются от 1 до 50 (не более 99, поэтому для совпадения будет достаточно двух цифр ...

Сегодня я снова и снова пытался сделать это регулярное выражение правильным, но я не уверен, правильно ли я поступлю ...

вот мое последнее усилие ....

/games-search?page=(^[0-9][0-9]+)&

это то, что я пытаюсь заменить на "" (например, ничего)

так как мне нужны только данные после символа & в URL-адресе ... и если ЕСЛИ URL-адрес даже содержит это (например, первая страница, когда в URL-адресе отсутствует символ & - если в URL-адресе отсутствует символ & персонаж, я не хочу его изменять, так как у меня уже есть данные, которые мне нужны)

Еще раз спасибо, если кто-нибудь может помочь

решил не разбивать на страницы результаты каждого поиска, так как никогда не будет более 15 результатов ..... это нормально, но я собираюсь реализовать минимальную длину поиска 4 символа, чтобы она не вызывала 500 результаты на букву А:)

1 Ответ

3 голосов
/ 11 февраля 2012

Поиск в массиве совпадений подстрок? 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 этого массива, и вы увидите, что у вас есть что-то очень простое в работе.1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...