【问题标题】:get only part of string using preg_match使用 preg_match 仅获取字符串的一部分
【发布时间】:2015-03-19 04:36:59
【问题描述】:

我有一个名为

的数组
$array_fields = array(
'field_0_0_4_target_range',
'field_0_0_5_target_range_criteria', 
'field_0_0_6_target_range_count');

我想将它分配给输出

$key = array('target_range', 'target_range_criteria', 'target_range_count');

我试过了,我得到了想要的结果:

foreach($array_fields as $field) {
   if(preg_match('/target_range/', $field)) {
      $key[] = substr($field,12); //hard coded
   }
}

这行代码"$key[] = substr($field,12)"的问题是我可能有一个包含"field_0_0_10_target_range_value"的字段。 这将包含不受欢迎的结果"_target_range_value"。如何确保获得包含 "target_range_*" 的所有字段?

【问题讨论】:

    标签: php string preg-match substring


    【解决方案1】:

    请尝试以下代码。

    $array_fields = array(
    'field_0_0_4_target_range',
    'field_0_0_5_target_range_criteria', 
    'field_0_0_6_target_range_count'
    );
    
    $new_fields = array();
    foreach ($array_fields as $v){
      if(preg_match('/target_range.*/',$v,$matchs))
      {
         $new_fields[] = $matchs[0];
      }
    }
    
    print_r($new_fields);
    

    【讨论】:

      【解决方案2】:

      这应该适合你:

      (这里我只是用array_map() 遍历每个数组元素,然后用target_range* 抓取所有元素并返回)

      <?php
      
          $array_fields = [
                  'field_0_0_4_target_range',
                  'field_0_0_5_target_range_criteria', 
                  'field_0_0_6_target_range_count'
              ];
      
          $array_fields = array_map(function($v){
              preg_match_all("/target_range.*/", $v, $matches);
              return $matches[0][0];
          }, $array_fields);
      
      
          print_r($array_fields);
      
      ?>
      

      输出:

      Array ( [0] => target_range [1] => target_range_criteria [2] => target_range_count )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 2016-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多