2017-08-18 4 views
1

私はcsvインポート機能を持っています。 csvにはこのような列があります '' 1。 NOが存在する場合Informatikは、学士、2015年1 Fachsemester ' またはこの ' 1 Mathematik、LA学士Gymnasien 2015年、 'LA' 'をpreg match and stripos

ラインに存在する場合'、そう$fachrichtung='Lehramt'、 LA、$fachrichtungは番号の後の最初の単語です。 ここでは:1. Informatik、Bachelor、2015、1.Fachsemester $fachrichtung= 'Informatik'。 最初の単語がInformatikまたはPhysikでない場合は、 $fachrichtung= 'Sonstige'です。

preg_match('/[\d]+\.(?P<fach>[\w\s]+)/ius', $tmp[6], $aMatches); 
$fachrichtung = (false !== stripos($tmp[6], ', LA ')) ? "Lehramt" : trim($aMatches['fach']); 

上記のコードに最後の条件( 'Sonstige')を含めるにはどうすればよいですか? ifとelseで試してみましたが、機能しません。あなたが後でfachグループの値をチェックし、それに応じて$fachrichtungに値を割り当てる必要が おかげ

答えて

0

// $tmp = '1. Mathematik, LA Bachelor Gymnasien, 2015,'; // => Sonstige 
$tmp = '1. Informatik, Bachelor, 2015, 1. Fachsemester'; // => Informatik 
$fachrichtung = ''; 
if (preg_match('/\d+\.(?P<fach>[\w\s]+)/ius', $tmp, $aMatches)) { 
    if (true === stripos($tmp, ', LA ')) { 
     $fachrichtung = "Lehramt"; 
    } else if ("Informatik" !== trim($aMatches['fach']) && "Physik" !== trim($aMatches['fach'])) { 
     $fachrichtung = "Sonstige"; 
    } else { 
     $fachrichtung = trim($aMatches['fach']); 
    } 
    echo $fachrichtung; 
} 

PHP demoを参照してください。

正規表現は問題ありません。if ... elseを追加しました。

else if ("Informatik" !== trim($aMatches['fach']) && "Physik" !== trim($aMatches['fach']))は、fachのグループ値が、トリミングされたInformatikまたはPhysikと等しくないかどうかをチェックします。等しくない場合は、Sonstigeの値を設定します。それ以外の場合は、グループ値fachを設定します。

+1

ありがとうございます!!!!! – egokyniker

+1

@egokynikerそれはあなたのために働いてうれしい。答えを受け入れることを検討してください([回答を受け入れる方法](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を参照してください)。 ([Stack Overflowについてのアップルのしくみ?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)を参照してください)。 –

+0

@okokyniker:Upvotingは、上向き矢印*を一度クリックすることを意味します。 –