选择字符串之间 - PHP

时间:2014-03-03 13:59:58

标签: php arrays string preg-replace strstr

我的文字如下:

$tagPossible = '365 Wallpapers now available on Nokia Store for #NokiaX family @nokiadeveloper @nokia';

此字符串中有两个单词@nokiadeveloper和@nokia

我所做的是这两个字符串(可以是X)我想存储到我的数据库中。

  

$ tag = strstr($ tagPossible,'@');
echo $ converTag =   str_replace('@','',$ tag);

这是我的输出: nokiadeveloper nokia

因为有两个标签,我想将它们作为两行导入我的数据库。 所以我需要在导入这个字符串时具体。

我怎么能选择这个字符串? 我想只选择nokiadeveloper和nokia作为数组。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用带有正向前瞻的preg_match_all()来提取所有必需的字符串:

(?<=\s)@(\w+)

说明:

  • (?<=\s) - 如果前面有空格字符
  • @ - 匹配文字@字符
  • (\w+) - 匹配(并捕获)任何字词[A-Za-z0-9_]

代码:

$ok = preg_match_all('/(?<=\s)@(\w+)/', $tagPossible, $matches);

if ($ok) {
    $arr = $matches[1];
}

print_r($arr);

输出:

Array
(
    [0] => nokiadeveloper
    [1] => nokia
)

答案 1 :(得分:0)

此外,here's another solution可能有帮助。仅仅因为我讨厌正则表达式:

$tag = strstr($tagPossible, '@');    
$tags = explode('@', $tag);

foreach($tags as $tag) {
    echo trim($tag). PHP_EOL;
}