2017-08-18 4 views
1

Ich habe eine CSV-Import-Funktion. Es gibt in der CSV eine Spalte wie diese '' 1. Informatik, Bachelor, 2015 1. Fachsemester '' oder diese '' 1. Mathematik, LA Bachelor Gymnasien, 2015 ''preg übereinstimmen und stripos

Wenn in der Zeile existiert 'LA', so $fachrichtung='Lehramt', wenn es keine LA, $fachrichtung ist das erste Wort nach der Nummer. hier: 1. Informatik, Bachelor, 2015, 1. Fachsemester $fachrichtung= 'Informatik'. Aber wenn das erste Wort nicht Informatik oder Physik ist, dann $fachrichtung= 'Sonstige'.

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

wie kann ich die letzte Bedingung include ('Sonstige') im Code oben? Ich habe es mit if und sonst versucht, aber es funktioniert nicht. Dank

Antwort

0

Sie müssen später den Wert der fach Gruppe prüfen und den Wert $fachrichtung entsprechend zuweisen:

// $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; 
} 

die PHP demo See.

Die Regex ist in Ordnung, ich habe nur ein paar if ... else hinzugefügt.

Die else if ("Informatik" !== trim($aMatches['fach']) && "Physik" !== trim($aMatches['fach'])) prüft, ob der Gruppenwert fach ungleich getrimmt Informatik oder Physik ist. Wenn es nicht gleich ist, setzen Sie Sonstige Wert. Andernfalls setzen Sie den Gruppenwert fach.

+1

vielen Dank !!!!! – egokyniker

+1

@egokyniker Schön, dass es für dich funktioniert hat. Bitte überlegen Sie, die Antwort zu akzeptieren (siehe [So akzeptieren Sie SO Antworten] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)) und upvoting, wenn meine Antwort hilfreich war Sie (siehe [Wie wird Upvote auf Stack Overflow?] (http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)). –

+0

@egokyniker: Upvoting heißt, einmal auf den Pfeil nach oben * zu klicken. –