2016-08-01 13 views
0

我有一個問題,我有一個公司的列表作爲一個數組,我用array_search()從這個數組中獲取鑰匙作爲ID存儲在數據庫中。當實體有撇號時,不能使用array_search()

這適用於我公司的所有公司除了帶撇號的公司外! 我不知道array_search()是如何工作的,但是我找不到在網上發佈的解決方案。

<?php 
$array = array("pipefix", "Housing ltd","o'briens roofing","argos"); 
$search = "o'briens roofing"; 

$id = array_search($search, $array); 
print_r($id); 

這是obviosuly不是我確切的代碼,但原理是一樣的,我想搜索的陣列爲我公司的,但如果它在它的',它總是會返回任何結果!任何想法或解決方案?

+0

你試過用'\\' – jitendrapurohit

+1

'array_search'不是專門處理任何字符。 – Barmar

+1

我懷疑問題是你在搜索字符串和數組中有不同的字符,就像其中一個是一個聰明的引號,而不是一個普通的ASCII撇號。 – Barmar

回答

1

我使用的數組是從另一個數據庫存儲的信息中提取的,併發布在我無法控制的API上。

我不存儲這個我的數據庫,我只存儲用於管理和輸入的[ID]。

檢索時拉出的數組是HTML編碼的。

我使用JSONcUrl從API中抽取這個數組。這意味着當我第一次得到陣列值Apostrophe已被轉換爲&apos;s

我以爲用htmlsecialchars_decode()會恢復這個。感謝Ryan Vincent,他向我展示了使用cUrl拉動它時產生的問題。

不幸的是,我不能改變這個,所以當數組創建時,我現在做一個str_replace(),只需刪除&apos;s

這意味着一旦顯示它在技術上是不正確的。但是由於這隻被少數人使用,因此這樣做比在每個搜索的後端執行此操作更有效。