2014-02-20 69 views
3

我有這樣的字符串:最近數

$string = "Serving Time: 5mins 
Cooking time 10 mins 
Servings 4 
Author: Somebody 

Directions 

1... 
2..." 

我希望得到的烹調時間輸出,這意味着最接近的數字來一句:「烹飪時間」,也是我想得到關閉數字詞組「份量」

所以輸出將

$serves = some_kind_of_function($string); 
$serves == 4; //true 

$cookingtime = some_kind_of_function($string); 
$cookingtime == 10 //true 

什麼是收購的是最好的方式?

謝謝!
亞當

+2

最好的辦法是使用正則表達式。 – DusteD

+0

那麼你有什麼嘗試?我們不在這裏做你的工作。 – HamZa

+0

不用擔心,在正則表達式上工作 –

回答

2

你可以使用這個搜索是這樣的:

function findNum ($str, $search) { 
    if (preg_match("/" . preg_quote($search, '/') . "\D*\K\d+/i", $str, $m)) 
     return $m[0]; 
    return false; 
} 

$str = "Serving Time: 5mins 
Cooking time 10 mins 
Servings 4 
Author: Somebody 

Directions 

1... 
2..."; 

findNum($str, "Cooking"); // 10 
findNum($str, "Servings"); // 4 
+0

感謝@anubhava專業答案,我認爲這是最簡單的答案。謝謝!! –

+0

不客氣,很高興它解決了。 – anubhava

1

,你可以將它通過替換單詞之間space通過,(comma) 使用此功能

$array = explode(' ', $string); 

現在

$count = count($array); 
for($i=0;$i<$count;$i++) 
{ 
    if($array[$i]=='servings') 
    { 
    $serves = $array[$i+1] 
    } 
    if($array[$i]=='time') 
    { 
    $cookingtime= $array[$i+1] 
    } 
} 

echo $serves; 
echo $cookingtime." Minutes"; 

請讓我知道如果您有任何轉換爲​​array問題。