我目前正在製作一個網站,我需要一個非常先進的搜索引擎。我希望用戶能夠說Person @ company
或Product @ Category
。我如何檢測@符號或任何特殊字符,將其過濾出來並根據返回的字符串生成各個變量。所以$a = Person
和$b = company
。PHP高級搜索
PHP高級搜索
回答
您可以使用explode()
分割字符串:
$items = explode('@', 'Person @ Company', 2);
if(count($items) === 2) {
// Person @ Company
$person = trim($items[0]);
$company = trim($items[1]);
// Do your searching here...
} else {
// Search normally, not Person @ Company.
}
非常感謝。只是通過手冊來查看如何做到這一點。 – 2012-01-10 01:36:00
將它作爲獲取請求發送,格式爲a =人& b =公司等。另一種方式正是你說的,循環查看字符串並逐個檢查字符。當你遇到@符號時,你知道它前面的字母(不包括空格)是a的值,而@(不包括空格)後的所有符號都是b的值。
對不起,我試圖儘可能清楚。
好的謝謝!我想將它作爲POST發送,只是爲了安全,所以我會在第二個選項上工作。謝謝!! – 2012-01-10 01:26:10
*發送爲... POST只是爲了安全* \ * facepalm \ * – 2012-01-10 01:37:32
@Joseph,作爲POST請求發送內容會在相應的GET請求中增加NO SECURITY。下載Firefox的tamperdata插件作爲示例,以查看用戶如何操作POST請求。 – atxdba 2012-01-10 01:40:59
這是實現非常簡單;
function searchForPersonAtCompany($searchQuery) {
global $db;
$queryComponents = explode('@', $searchQuery, 2);
if (count($queryComponents) != 2) {
// '@' was not specified in the search query, return an empty array.
return array();
}
$person = $queryComponents[0];
$company = $queryComponents[1];
$sql = 'SELECT p.id AS personId, c.id AS companyId FROM people p JOIN companies c ON p.company = c.id WHERE p.name LIKE :person AND c.name LIKE :company';
$stmt = $db->prepare($sql);
$stmt->bindValue(':person', $person);
$stmt->bindValue(':company', $company);
$stmt->execute();
return $stmt->fetchAll();
}
您沒有指定數據庫模式,所以我猜,你有一個people
表和companies
表,其中涉及到公司的表與company
場的人。
Table: People
id | name | company
--------------------------------------------
1 | Alice | 1
2 | Bob | 1
3 | Charles | 2
Table: Companies
id | name
--------------------------------------------
1 | Company A
2 | Company B
您將不得不根據您的目的調整代碼,但使用我的測試數據,以下內容應該可以工作;
searchForPersonAtCompany('[email protected] A');
searchForPersonAtCompany('[email protected] B');
注:
- 這是一個非常簡單的實現你的搜索,你可能會得到更好的尋找到一個基於數據庫的搜索引擎,它可以處理爲未來更復雜的查詢。
- 我已經使用PDO作爲連接到我的數據庫(bindValue,exec等),你可能會使用不同的東西。
:person
和:company
只是SQL中的變量。
使用1作爲極限參數是錯誤的。 – Ryan 2012-01-10 01:37:13
發現那個,編輯爲2;) – xconspirisist 2012-01-10 01:39:23
- 1. PHP高級搜索
- 2. 高級搜索,PHP和MySQL
- 3. 高級搜索PHP,MySQL
- 4. 高級搜索使用PHP
- 5. 高級搜索
- 6. 高級搜索
- 7. 高級搜索
- 8. 高級搜索vb.net
- 9. Mysql高級搜索
- 10. magento高級搜索
- 11. Sqlite高級搜索
- 12. JQgrid高級搜索
- 13. 高級搜索Github?
- 14. Jqgrid高級搜索
- 15. PHP/MySQL的高級搜索頁面
- 16. Php/MySql'高級搜索'頁面
- 17. PHP Codeigniter高級搜索過濾器
- 18. 高級搜索框使用php
- 19. PHP中的高級搜索選項
- 20. jqGrid的高級搜索 - 保存搜索
- 21. 高級搜索使用Hibernate搜索
- 22. LAMP/jquery高級搜索
- 23. 製作高級搜索
- 24. 導軌 - 高級搜索
- 25. 高級AngularJS Live搜索
- 26. LINQ中的高級搜索
- 27. Deezer高級搜索無效
- 28. 高級搜索表單?
- 29. 在Vim中高級搜索
- 30. Yii2的高級搜索
我相信這只是一個簡單的解析問題,不是'高級搜索':) – ianace 2012-01-10 02:39:40