[英]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.