preg match and stripos

时间:2017-08-18 13:21:38

标签: php preg-match stripos

我有一个csv导入功能。在csv中有一个这样的列     '' 1。 Informatik,Bachelor,2015,1。Fachsemester''        或这个  ''1. Mathematik,LA Bachelor Gymnasien,2015,''

如果该行存在'LA',那么$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但它不起作用。 感谢

1 个答案:

答案 0 :(得分:0)

您需要稍后检查fach群组的值,并相应地将值指定给$fachrichtung

// $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组值是否不等于剪裁InformatikPhysik。如果不相等,请设置Sonstige值。否则,请设置fach组值。