2012-11-27 46 views
0

我試圖找到一個字符串裏面的另一個字符串(我試過使用strpos,但沒有得到任何結果回來)使用PHP。以下是我已經試過:在PHP中使用strpos尋找一個字符串

$assignedBuildings = " , building 1, building 2, building 3"; 
$buildingName = "building 1"; 
$assArray = array_map('trim', explode(',', $assignedBuildings)); 
print_r($assArray); 
echo("Looking for: " . $buildingName . " in " . $assignedBuildings); 
$pos = in_array($buildingName, $assArray); 

中的print_r得到我:

Array 
(
    [0] => 
    [1] => Test Chapter 
    [2] => Test 2 Chapter 
    [3] => Test 3 Chapter 
) 

,當我回聲$ POS,我什麼也得不到(如 「」)。

讓我們假裝$ buildingName是「Test 3 Chapter」。我如何在$ assArray中找到它?

+0

使用'strstr'完成此任務 –

+0

你是什麼意思「$ pos讓我無處」?它讓你'int 3'正是它應該是的。 – sachleen

+1

@DarkWish在strstr文檔中:「如果您只想確定乾草堆內是否出現特定的針,請使用速度更快,佔用內存更少的函數strpos()。」聽起來像OP有正確的功能。 – sachleen

回答

3

如果分配的建築物列表是逗號分隔的列表,我建議將其分解,然後在結果數組中檢查您的值。所以,這樣的事情:

$assignedbuildings = explode(",",",building 1,building 2,building 3"); 
$buildingToLookFor = "building 1"; 
$buildingfound = in_array($buildingtolookfor,$assignedbuildings); 

注意事項:

  1. 你需要確保有大約在清單中的項目沒有空間,不也是在搜索字符串
  2. 如果您希望搜索不區分大小寫,請在兩個字符串周圍添加strtolower。
  3. 使用strpos函數是有問題的,因爲它不會分離單個條目。因此,如果您的列表包含「Building 10」,則strpos將返回「Building 10」和「Building 1」的值。
+2

'array_map('trim',explode(',',$ assignedbuildings))'會照顧空間。 –

+0

nvm,這工作 – Vikram

4

你有一個錯字。

變化

$pos = strpos($assingedBuildings, $buildingToLookFor); 

$pos = strpos($assignedBuildings, $buildingToLookFor); 
+0

驚訝的PHP沒有把他扔出去undefined變量錯誤 –

+0

我改了錯字,但仍然沒有工作 – Vikram

+0

@Vikram:對我來說工作正常,我得到$ pos == 3;如果你想獲得布爾值,如果($ pos!== false){echo「is found」;} – lvil

0

錯字在$ assingedBuildings是搞亂你。

+0

我改變了錯字,但仍然沒有沒有工作。 – Vikram

0

您必須更改$assingedBuildings$assignedBuildings :)請參閱演示here

相關問題