2017-10-07 4 views
-1
$str = "SC - ESV Parndorf 2 - 5 SV Horn"; 
$str4 = explode(" - ", $str,2); 
$str5=$str4[0];  
$str6 = explode(" ", $str5); 
$Num=end($str6);   
$str7=$str4[1];  
$str8 = explode(" ", $str7); 
$Num1 = $str8[0]; 

2つの " - "がある場合、2と5の文字列を取得できません。2つのハイフンを含むexplodeを使用して分割することができません

+0

ようこそ! [How to Ask](https://stackoverflow.com/questions/how-to-ask)、[最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)をお読みください。 )、それに応じて質問を編集します。また、サイトツアーをチェックして、ここで何がうまくいくかを知ることもできます。 – wp78de

+0

私はちょうどスコアを抽出したいです。 –

+0

回答は役に立ちましたが...... "フィードバックに感謝します!評判が15未満の人の投票が記録されますが、公開されたポストスコアは変更されません。 –

答えて

0

代わりに正規表現を使用することをおすすめします。このようなpreg_match_all()とともに(^.+) (\d+) - (\d+) (.+$)

$re = '/(^.+) (\d+) - (\d+) (.+$)/'; 
$str = 'SC - ESV Parndorf 2 - 5 SV Horn'; 
preg_match_all($re, $str, $matches); 
foreach ($matches as $match) { 
    echo $match[0] . "\n"; 
} 

あなたの質問によると、あなたはグループ2と3、RESPをキャプチャで最も興味を持っています。 $matches[2][0]および$matches[3][0]

+0

提案されている2つの機能の違いは、 'preg_match'は最初のマッチを見失うことです。 'preg_match_all'は文字列全体の処理が終了するまで続きます。 1つのマッチを持つ1行の文字列がある場合は、preg_matchで十分です。そうでない場合は、preg_match_allが優れています。 http://php.net/manual/en/function.preg-match-all.php – wp78de

0

な仕事のために、あなたはより良いpreg_match使用したい:

$re = '/(\d+)\s+-\s+(\d+)/'; 
$str = 'SC - ESV Parndorf 2 - 5 SV Horn'; 
preg_match($re, $str, $matches); 
print_r($matches); 

説明:

/   : regex delimiter 
    (\d+) : group 1, 1 or more digits 
    \s+-\s+ : a dash between some spaces 
    (\d+) : group 2, 1 or more digits 
/   : regex delimiter 

出力:stackoverflow.comへ

Array 
(
    [0] => 2 - 5 
    [1] => 2 
    [2] => 5 
) 
+0

@ wp78de:あなたはpreg_match_allを使用していますが、あまりにも多くのグループをキャプチャしています – Toto

関連する問題