簡體   English   中英

如何查找和識別字符串的特定部分?

[英]How to find and identify a specific part of a string?

我正在建立一個搜索網站,用戶可以在其中查找桌子上的東西。

搜索效果很好,但我希望能夠允許用戶使用Google或Bing結果進行搜索。 我希望人們通過在查詢后輸入一個/來標識他們要使用特定的搜索引擎。

因此,例如,搜索某物/ google會將搜索結果發送給Google。 對於Bing同樣如此。

您可以使用正則表達式提取查詢字符串的這些部分。 例如

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

將拉出所有以斜杠開頭且后跟查詢中一個或多個字母的標記。 然后,您可以通讀這些標記並決定對每個標記采取什么操作。

此正則表達式解決方案是可靠的,因為它應允許這些(以空格分隔)標記出現在查詢字符串中的任何位置,甚至允許在查詢字符串中包含多個標記。

然后,您可能還希望使用preg_replace(...)從查詢中剝離這些標記,以便可以處理其余的搜索文本。

如果您正在尋找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頁面上收到錯誤消息。

使用preg_match檢查/search_engine搜索字符串的最后一部分。

如果存在,則將其重定向到

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM