Home > php > 正则提取之–药品篇

正则提取之–药品篇

[文章作者:陈毓端 若转载请标注原文链接:http://www.woyuw.com/?p=650]

今天帮一位老乡正则提取抓来的药品数据,以获取药品的属性。因为关键字比较混乱大体包过:’成分’,'适应症’,'注意事项’,'规格’,'药理用途’,'用法用量’等
下面是实现的简单代码,没有做效率优化

  1. <?php
  2. /*
  3.    @Author      陈毓端
  4.     @E-mail     itw1@163.com
  5.    @Homepage    http://blog.woyuw.com
  6. */
  7. try {
  8.  
  9.     $dbh = new PDO("sqlite:./data.db3");
  10.     $mysqldbh = new PDO("mysql:host=localhost;dbname=xxx",'root','xxx');
  11.     $mysqldbh->exec("SET NAMES 'utf8';");
  12. }
  13. catch(PDOException $e)
  14. {
  15.     echo $e->getMessage();
  16. }
  17. function regular ($str,$array){
  18.     $tmp='/';
  19.     foreach($array as $key){
  20.         $tmp.=$key.'(.*)';
  21.     }
  22.     $tmp=$tmp."$/iUs";
  23.     preg_match_all($tmp,$str,$out);
  24.     $newArray=array();
  25.     $i=0;
  26. foreach($out as $key){
  27.      if($i<count($out)-1)
  28.         $newArray[$array[$i]]=$out[$i+1];
  29.         $i++;
  30.     }
  31.    
  32.     return $newArray;
  33. }
  34.  $sql = "SELECT * FROM Content limit  30";
  35.  $values=array();
  36. foreach ($dbh->query($sql) as $row)
  37. { 
  38.     $array=array('成分','适应症','注意事项','规格');
  39.    $value=regular ( $row['otccontent'],$array);
  40.  
  41.    if(!empty($value['成分'])){
  42. array_push($values,$value);
  43.        continue;
  44.    }
  45.    $array=array('成分','药理用途','用法用量');
  46.    $value=regular ( $row['otccontent'],$array);
  47.  
  48.    if(!empty($value['成分'])){
  49.    array_push($values,$value);
  50.        continue;
  51.    }
  52.     $array=array('成分','适应症','不良反应');
  53.    $value=regular ( $row['otccontent'],$array);
  54.  
  55.    if(!empty($value['成分'])){
  56.        array_push($values,$value);
  57.        continue;
  58.    }
  59.     $array=array('别名','外文名','药理作用','适应症','注意事项');
  60.      $value=regular ( $row['otccontent'],$array);
  61.      if(!empty($value['别名'])){
  62.         array_push($values,$value);
  63.         continue;
  64.     }
  65.    $array=array('别名','药理作用','功能与主治','用法与用量','规格');
  66.      $value=regular ( $row['otccontent'],$array);
  67.      if(!empty($value['别名'])){
  68.        array_push($values,$value);
  69.         continue;
  70.     }
  71.     $array=array('别名','外文名','适应症','注意事项');
  72.      $value=regular ( $row['otccontent'],$array);
  73.      if(!empty($value['别名'])){
  74.         array_push($values,$value);
  75.         continue;
  76.     }
  77.    //if(!empty($value['别名'])){
  78.         $array=array('别名','适应症','用量用法','不良反应');
  79.      $value=regular ( $row['otccontent'],$array);
  80.      if(!empty($value['别名'])){
  81.         array_push($values,$value);
  82.         continue;
  83.     }
  84.    
  85.      $array=array('别名','适应症','用量用法','注意事项','规格');
  86.      $value=regular ( $row['otccontent'],$array);
  87.      if(!empty($value['别名'])){
  88.         array_push($values,$value);
  89.         continue;
  90.     }
  91.         $array=array('别名','适应症');
  92.      $value=regular ( $row['otccontent'],$array);
  93.      if(!empty($value['别名'])){
  94.         array_push($values,$value);
  95.         continue;
  96.     }
  97.  
  98.  
  99. }
  100.  print_r($values);
  101. ?>
Categories: php Tags:
  1. No comments yet.