2012-12-18 90 views
-1

我有以下的文本字符串:「園藝,園林綠化,足球,3D建模」查找字符串數組 - PHP

我需要PHP短語之前挑出來的字符串,「Football」。

因此,無論數組的大小,代碼將始終掃描短語「Football」,並檢索它之前的文本。

這裏是我的(跛腳)試圖至今:

$array = "Swimming,Astronomy,Gardening,Rugby,Landscaping,Football,3D Modelling"; 
$find = "Football"; 
$string = magicFunction($find, $array); 
echo $string; // $string would = 'Landscaping' 

任何幫助,將不勝感激。

非常感謝

+1

而且[你有什麼嘗試](http://whathaveyoutried.com)? – Havelock

+0

嗨:)我還沒有嘗試過任何東西,因爲我有點不確定從哪裏開始。 – michaelmcgurk

+0

這看起來像正規表達式的工作 –

回答

2
$terms = explode(',', $array); 
$index = array_search('Football', $terms); 
$indexBefore = $index - 1; 

if (!isset($terms[$indexBefore])) { 
    trigger_error('No element BEFORE'); 
} else { 
    echo $terms[$indexBefore]; 
} 
+0

現在就試試這個 - 謝謝! :-) – michaelmcgurk

+0

這工作很好 - 謝謝!!!!!!! – michaelmcgurk

+0

無法編碼它自己:) –

2
//PHP 5.4 
echo explode(',Football', $array)[0] 

//PHP 5.3- 
list($string) = explode(',Football', $array); 
echo $string; 
+0

非常感謝。我現在就試試這個。 – michaelmcgurk

+0

謝謝你。但是,它不會刪除**之前的內容**「足球」這個短語。所以,我的$字符串變成了「游泳,天文,園藝,橄欖球,園林綠化」。有任何想法嗎?謝謝。 – michaelmcgurk

+1

哦,通過「挑選」我認爲你的意思是「得到」而不是「刪除」。只需使用'[1]'或'list(,$ string)'。 –

1
$array = array("Swimming","Astronomy","Gardening","Rugby","Landscaping","Football","3D" "Modelling"); 
$find = "Football"; 
$string = getFromOffset($find, $array); 
echo $string; // $string would = 'Landscaping' 

function getFromOffset($find, $array, $offset = -1) 
{ 
    $id = array_search($find, $array); 
    if (!$id) 
     return $find.' not found'; 
    if (isset($array[$id + $offset])) 
     return $array[$id + $offset]; 
    return $find.' is first in array'; 
} 

您還可以設置的偏移量從1以前不同。