2017-02-21 6 views
1

私は材料の複数の入力をそう設定されています。値で爆発またはstr_split

3倍ニンジン 1/2カップ牛乳(または牛乳1/2カップかもしれない) 小さじ1オリーブオイルの

と私がいるかどうかを確認することができますので、私はまた、食材や測定単位のリストを持っています彼らは文字列の中にあります。

今私はの言葉がそう

$listIngredients = // a massive list pulled from the database like below 
$units   = ['x', 'cup', 'tsp']; 
$results   = []; 
foreach($result->recipe_ingredients as $ingredient) 
{ 
    $results = strtr($ingredient, 'of ', ''); 
    $results = explode($ingredient); 
    // using str_plural() I want to check if ingredient or units of measurement exist. then 
    // split them if they do so I have an array having the number, then unit, then ingredient 
    // then I will save each in the database under different columns. 
} 
ような配列である場合、私は考えることができるすべてをチェックすることで開始された私の成分またはユニットリスト

からの値に基づいて文字列を分割する方法が分かりません

これを行うにはより良い方法がありますか?多分空白やintがあるかどうかを調べることができます。 3xニンジンまたは1/2カップ。私は非常に混乱している> _ <

編集:私はIDがこれをそこに投げると思った、私は爆発が2つのパラメータを必要と知っている。私の質問は2つ以上必要な場合、どのようなパラメータに関連しています。私は整数、ユニット、および成分の文字列をチェックしたいと思います。

+3

期待する入力と出力の簡単なリストを提供できますか?あなたの質問もとても混乱しています> _ < – bansi

+1

'$ results = explode($ ingredient); ' - 2つのパラメータが必要です。あなたは1つしか渡していません。 – Naga

+0

'strtr'は常に変換後に文字列を返します....そして' strtr'の結果に対してforeachを適用しています –

答えて

1

私はidが存在し、これを捨てると思ったあなたは

を意味するかは非常にわからない、私は爆発が2つの パラメータを必要と知っています。私の質問は、私が が2以上必要な場合、どのようなパラメータに関連しています。私は整数、ユニットと の文字列をチェックしたいと思う。

しかし、私の推測では、あなたがチェックする必要があること、である: はExploding by Array of Delimiters

また、あなたは文字列が

(strtolower()で大文字と小文字を区別しない)この単純な古い溶液で文字列の一部が含まれているかどうかを確認するためにこれを使用することができます
if (strpos(strtolower($haystack), strtolower($needle)) !== false) { 
    echo 'true'; 
} 

私はキーフレーズのリストで文字列を爆発させてから、使用可能なキーフレーズが残っていない限り、配列要素を再び爆発させようとします。また、左に要素に使用されていた区切り文字を追加する必要があります。したがって、要素を失うことはありません(何らかの空白文字で再分割を防ぐことができます)。

+1

これはうれしいです。どこから始めたら良いのか、それともバックエンドのソリューションなのか分からず、多くの助けになりました。私はフロントエンドでjsを使用してスペースをチェックしてから、ユニットをオートコンプリートし、次に成分を使うかもしれません。この方法で私は値を知っている。 –