如何从以@开头的字符串中获取数组并以字符串中的空格结尾

时间:2018-10-06 07:13:57

标签: php regex

如何从下面的字符串中获取数组?
我需要介于@space之间的内容。

Gold star @RPXIeDIWVuTHFWGkaWbJEvv0KFk2 nice James @72oCu3zBCHQzS5fiY3KNFCWkgA53 for @DoxBay

我正在使用php爆炸功能

$output=explode("@",$title);
var_dump($output);

2 个答案:

答案 0 :(得分:2)

听起来像您将要使用preg_match_all()来创建字符串中所有匹配项的数组。

这将获取您的字符串并将其与您的模式进行比较。它将把您要查找的结果放置在matchs数组的第二个元素中。

像这样:

$str = 'Gold star @RPXIeDIWVuTHFWGkaWbJEvv0KFk2 nice James @72oCu3zBCHQzS5fiY3KNFCWkgA53 for @DoxBay ';

preg_match_all('/@(.*?)\s/', $str, $matches);

echo '<pre>';
print_r($matches[1]);
echo '</pre>';

这将输出:

Array
(
    [0] => RPXIeDIWVuTHFWGkaWbJEvv0KFk2
    [1] => 72oCu3zBCHQzS5fiY3KNFCWkgA53
    [2] => DoxBay
)

答案 1 :(得分:1)

最简单的方法可能是正则表达式。
这将捕获@和空格之间的内容。
由于最后一个单词后面没有空格,因此我们可以在字符串中添加空格或更改模式。我选择添加一个空格。

$str = "Gold star @RPXIeDIWVuTHFWGkaWbJEvv0KFk2 nice James @72oCu3zBCHQzS5fiY3KNFCWkgA53 for @DoxBay";
preg_match_all("/\@(.*?)\s/", $str . " ", $match);
var_dump($match);

输出:

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(30) "@RPXIeDIWVuTHFWGkaWbJEvv0KFk2 "
    [1]=>
    string(30) "@72oCu3zBCHQzS5fiY3KNFCWkgA53 "
    [2]=>
    string(8) "@DoxBay "
  }
  [1]=>
  array(3) {
    [0]=>
    string(28) "RPXIeDIWVuTHFWGkaWbJEvv0KFk2"
    [1]=>
    string(28) "72oCu3zBCHQzS5fiY3KNFCWkgA53"
    [2]=>
    string(6) "DoxBay"
  }
}

https://3v4l.org/RNM2P