我已经在这个上破坏了我的球,而且我一直在尝试无数的正则表达式,但似乎无法做到这一点。 (我对正则表达式没有经验)。
以下情况正在进行中,让我们以此基本句子为例;
I recently saw @john-doe riding a bike, did you noticed that too @foo-bar?
这里的诀窍是只从字符串中获取@john-doe
和@foo-bar
部分,最好是在数组中:
$arr = [
'@john-doe',
'@foo-bar'
];
有人可以帮助我走上正轨吗?
答案 0 :(得分:1)
您可以使用此正则表达式(\@(?P<name>[a-zA-Z\-\_]+))
:
<?php
$matches = [];
$text = "I recently saw @john-doe riding a bike, did you noticed that too @foo-bar?";
preg_match_all ("(\@(?P<names>[a-zA-Z\-\_]+))" ,$text, $matches);
var_dump($matches['names']);
在这个例子中,我使用?P<names>
命名捕获组,它更容易获得。
我为你制作了一个Regex101,还有一个用于测试的PHP沙箱
https://regex101.com/r/ZFWvCG/1
http://sandbox.onlinephpfunctions.com/code/1d04ce64a2a290994bf0effd7cf8f0039f20277b