1

我有一个 csv 导入功能。在 csv 中有一个像这样的列 ''1. Informatik, 学士, 2015, 1. Fachsemester'' or this '' 1. Mathematik, LA 学士, 2015,''

如果行中存在 'LA' ,那么$fachrichtung='Lehramt',如果没有 LA,$fachrichtung则为数字后的第一个单词。这里: 1. Informatik, 学士, 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 尝试过,但它不起作用。谢谢

4

1 回答 1

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 演示

正则表达式没问题,我刚刚添加了几个if ... else.

else if ("Informatik" !== trim( $aMatches['fach'] ) && "Physik" !== trim( $aMatches['fach'] ))检查组fach值是否不等于 trimmedInformatikPhysik。如果不相等,则设置Sonstige值。否则,设置fach组值。

于 2017-08-18T14:07:59.517 回答