簡體   English   中英

URL模式匹配(PHP)?

[英]URL Pattern Matching (PHP)?

(編程語言:PHP v5.3)

我正在該網站上工作,在該網站上我使用google和bing搜索API在特定網站上進行搜索。

該項目:

用戶可以從下拉列表中選擇要搜索的網站。 我們在此網站上有一個管理面板。 如果管理員想將新網站添加到下拉列表中,則他必須提供該站點的兩個示例URL,如下所示。

表格圖片

在提交表單時,代碼會經過輸入並生成一個正則表達式,稍后我們將其用於模式匹配。 正則表達式存儲在數據庫中,以備后用。

訪問用戶以另一種形式從下拉列表中選擇一個網站。 然后,他在文本框中輸入搜索“查詢”。 我們使用搜索API(如上所述)以JSON格式獲取結果,其中我們使用以下查詢語法作為搜索字符串:

“ site:網站查詢”
(我們將“網站”替換為用戶選擇進行搜索的網站,並將“查詢”替換為用戶的搜索查詢)。

問題

現在,我們要做的就是獲取url的最佳匹配。 進行模式匹配的原因是,有時搜索結果中會有不需要的鏈接。 例如,假設我在網站“ www.example.com”上搜索了名為“ abcd”的文章。 搜索引擎可能會返回以下兩個網址:

1)www.example.com/articles/854/abcd
2)www.example.com/search/abcd

第一個網址就是我想要的網址。 現在我有兩個問題要解決。

1)我知道,考慮到管理員定期添加網站,我編寫的用於從示例URL制作正則表達式模式的代碼永遠都不是完美的。 永遠不會有足夠的條件來檢查是否可以使用相同的代碼為不同的網站創建模式。 有沒有更好的方法做到這一點,或者正則表達式是我唯一的選擇?

2)我正在運行Windows 7 OS的計算機上進行開發。 preg_match_all()在這里返回結果。 但是,當我將代碼移至運行Linux OS的服務器時,preg_match_all()不會針對相同參數返回任何結果嗎? 我似乎無法理解為什么會這樣。 有人知道為什么會這樣嗎?

我從事Web技術的工作僅過去幾周了,所以我不知道我是否有比regex更好的選擇。 如果您能協助我或將我引導到可以為我的問題找到解決方案的資源,我將不勝感激。

關於問題1:我不太了解您要完成的工作,因此我無法提供任何有效的意見。

關於問題2:如果兩個服務器都運行相同版本的PHP,則使用的regex庫應該相同。 但是,您可以通過制作一個模擬靜態文件或字符串來測試此正則表達式,並查看結果是否相同,從而進行測試。

由於您是從搜索引擎獲取結果然后進行解析,因此數據檢索可能會有所不同。 Google /必應更改與您使用的操作系統有關的部分數據,這可能會更改預編譯結果。

暫無
暫無

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

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