0

我有这个字符串

@[181] @[183] @[4563]

在这种情况下,我想从这个字符串中获取 [] 之间的值

181,183,4563

4

4 回答 4

3

这应该可以解决问题:

$string = '@[181] @[183] @[4563]';
preg_match_all('/\[([0-9]*)\]/', $string, $matches);
foreach($matches[1] as $number) {
    echo $number;
}
于 2013-07-15T22:10:28.400 回答
2
<?php 
$string = '@[181] @[183] @[4563]';
preg_match_all("#\[([^\]]+)\]#", $string, $matches); //or #\[(.*?)\]#
print_r($matches[1]);
?> 

Array
(
    [0] => 181
    [1] => 183
    [2] => 4563
)
于 2013-07-15T22:11:58.597 回答
2

我知道使用正则表达式可能听起来很性感,但在这种情况下,您可能不需要全部功率/开销,因为您有一个格式非常好的输入字符串。

$string = '@[181] @[183] @[4563]';
$needles = array('@', '[', ']');
$cleaned_string = str_replace($needles, '', $string);
$result_array = explode(' ', $cleaned_string); 
于 2013-07-15T22:21:08.857 回答
0

假设数组之间的值是数字,这很简单

 $s =  '@[181] @[183] @[4563]';
 preg_match_all('/\d+/', $s, $m);

 $matches_as_array = $m[0];
 $matches_as_string = implode(',', $m[0]);
于 2013-07-15T22:25:14.943 回答