简体   繁体   English

使用preg_match仅获取字符串的一部分

[英]get only part of string using preg_match

I have an array named 我有一个名为的数组

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

I want to assign it to have an output of 我想分配它的输出为

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

I tried this and I get the desired result: 我尝试了这一点,并且得到了预期的结果:

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

The problem with this line of code "$key[] = substr($field,12)" is that I may have a field containing "field_0_0_10_target_range_value" . 这行代码"$key[] = substr($field,12)"是我可能有一个包含"field_0_0_10_target_range_value"的字段。 This will contain an undesirable result "_target_range_value" . 这将包含不良结果"_target_range_value" How can I make sure that I get all fields containing "target_range_*" ? 如何确定我包含"target_range_*"所有字段?

Please try following code. 请尝试以下代码。

$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);

This should work for you: 这应该为您工作:

(Here I just go through each array element with array_map() , then I grab everything with target_range* and return it) (在这里,我只是使用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);

?>

output: 输出:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM