我有这个字符串
@[181] @[183] @[4563]
从这个字符串我希望在这种情况下获得[]之间的值
181,183,4563
答案 0 :(得分:3)
这应该可以解决问题:
$string = '@[181] @[183] @[4563]';
preg_match_all('/\[([0-9]*)\]/', $string, $matches);
foreach($matches[1] as $number) {
echo $number;
}
答案 1 :(得分:2)
<?php
$string = '@[181] @[183] @[4563]';
preg_match_all("#\[([^\]]+)\]#", $string, $matches); //or #\[(.*?)\]#
print_r($matches[1]);
?>
Array
(
[0] => 181
[1] => 183
[2] => 4563
)
答案 2 :(得分:2)
我知道使用正则表达式可能听起来很性感,但是这种情况下你可能不需要全部功率/开销,因为你有一个格式很好的输入字符串。
$string = '@[181] @[183] @[4563]';
$needles = array('@', '[', ']');
$cleaned_string = str_replace($needles, '', $string);
$result_array = explode(' ', $cleaned_string);
答案 3 :(得分:0)
假设数组之间的值是数字,这很简单
$s = '@[181] @[183] @[4563]';
preg_match_all('/\d+/', $s, $m);
$matches_as_array = $m[0];
$matches_as_string = implode(',', $m[0]);