2014-03-03 50 views
1

我有文字,如:
選擇路線之間 - PHP

$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諾基亞

Becouse有兩個標籤,我想導入它們,兩行到我的數據庫。 所以當導入這個字符串時我需要具體。

我怎麼能夠選擇這個字符串? 我想只選擇nokiadeveloper和nokia作爲數組。

謝謝!

回答

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 
) 
+0

是的它的工作完美!謝謝 ! – Seik

+0

@Seik:很高興能幫到你。如果這回答了你的問題,請[接受答案](http://meta.stackexchange.com/a/5235/220538)。 –

+0

太棒了,我已經選擇了答案。它工作很好。 THX爲您的解決方案。 – Seik

0

此外,here's another solution,也許有幫助。只是因爲我討厭正則表達式:

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

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