2011-08-13 6 views
0

PHPを使ってTwitterのステータスを解析しているので、特定のタグ(#php)を追加したかどうかを認識するコードを記述します。コードは常に#phpタグを検索し、その人がタグを追加したかどうかを判断します。 #phpタグのみを検索しています。どのように私はPHPでそのようなコードを書くことができますか?Twitterのステータスでハッシュタグを認識します

答えて

3

$has_php = preg_match('/#php\b/i', $tweet); 

それは、大文字と小文字を区別しないのです。

+0

確かに良い解決策ですが、ここで 'regex'を使うと、PHPのネイティブストリングライブラリ(' stripos')でもこれを行うことができます。 – elslooo

+1

他のstrposの解決策は、前にFloernが述べたようにfalse positiveを引き起こすでしょう。#phpfoo – Pollett

+0

@ tim-van-elsloo OPは "#php"を正確に検出するための解決策を求めました。問題 - "#php5"を含む文字列はマッチするべきではありません。 – Doches

1

$has_hash = (boolean) strpos($status, '#php');

+0

これは、最初に '#phpfoo'で偽陽性または'#php'で偽陰性を引き起こします。 – Floern

+0

@Floernはい、いい出発点です! :) – daGrevis

0

この溶液を@daGrevisのものに基づいていますが、2つのバグ修正されています$status#phpで始まる場合、これはまた、trueを返します

$has_hash = (($has_hash = stripos($status, '#php')) !== false && $has_hash >= 0); 

を。 strposだけを使用すると、位置が0== false)であり、#Phpまたは何かが見つかった場合はtrueを返します(大文字と小文字は区別されません)ので、falseを返します。 preg_match()

+0

Hm、これは '#php'がないときも' true'を返します。 – Floern

+0

いいえ、それはできません。 'stripped( 'Lorum Ipsum'、 '#php')=> -1'、'(-1> = 0)=> false'だから '$ has_hash => false'です。 – elslooo

+0

Docs:stripos() "needleが見つからない場合、stripos()はboolean FALSEを返します。 '$ has_hash => true' – Floern

関連する問題