Как найти и идентифицировать конкретную часть строки? - PullRequest
0 голосов
/ 23 февраля 2011

Я создаю поисковый сайт, на котором пользователи могут находить вещи с помощью моей таблицы.

Поиск работает отлично, но я хочу, чтобы у пользователей была возможность поиска вместо этого с помощью результатов поиска Google или Bing.Я хотел бы, чтобы люди указали, что они хотят использовать конкретную поисковую систему, указав / после запроса.

Так, например, поиск по что-то / google отправит поиск в Google.Аналогично для Bing.

Ответы [ 3 ]

2 голосов
/ 23 февраля 2011

Если вы ищете Google и Bing или небольшое количество поисковых систем, вы можете попробовать:

if (strpos('/google',$_GET['q']) !== false) {
    header('Location: http://www.google.com/q='.str_replace('/google','',$q).'+site:example.com');
    exit;
} else if (strpos('/bing',$_GET['q']) !== false) {
    header('Location: http://www.bing.com/search?q='.str_replace('/bing','',$q).'+site:example.com');
    exit;
}

Обратите внимание, вам нужно добавить это на свою страницу, прежде чем текст будет выведен наВыходной буфер PHP (из-за вызова функции header ()).Это означает, что до того, как PHP получил указание написать что-либо на странице.В противном случае вы получите сообщение об ошибке на странице PHP.

2 голосов
/ 23 февраля 2011

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

preg_match_all('(?=^|\s)/[a-z]+\b', $query, $matches)

Извлекает все токены, которые начинаются с косой черты и сопровождаются одной или несколькими буквами из вашего запроса. Затем вы можете прочитать эти токены и решить, какие действия предпринять с каждым из них.

Это решение регулярного выражения является надежным, поскольку оно должно позволять этим (разделенным пробелами) токенам появляться в любом месте строки запроса или даже иметь несколько токенов в строке запроса.

Затем вы можете также использовать preg_replace(...), чтобы убрать эти токены из запроса, чтобы вы могли обработать остальную часть текста поиска.

0 голосов
/ 23 февраля 2011

используйте preg_match, чтобы проверить последнюю часть строки поиска для /search_engine.

если он существует, перенаправить их на

http://www.google.com/search?q=site%3Adomain.com+search+string

...