2012-01-08 11 views
0

たとえば、テキストがあります。シンボルからシンボルへのテキストの一部の検索

$text = 'Hello dear friend, my name is Jacky. 
I am 25 years old and @I am earning* $500 per month, but @I am going* to earn more'; 

私は記号から始まるテキスト内のすべての部品を見つけたい「@」と「*」記号で終わります。

$found[1] = 'I am earning'; 
$found[2] = 'I am going'; 

これで私を助けることができる: は、この例では、私はこのような変数を持っていたいですか?私はstrstr()を使用していますが、見つかった部分が複数ある場合は失敗しています。

+0

あなたはすぐに充実した回答を得られますが、これはpreg_matchで行われます。私は正規表現のための正確な構文を覚えていないので、コメント。 –

+1

http://php.net/manual/en/function.preg-match-all.php – PeeHaa

+0

「誰がこれを手伝ってくれるの?スタックオーバーフローはメンター募集会場ではありません。 _具体的な質問_をお願いして、あなたが試したことを私たちに示してください。 –

答えて

3
preg_match_all('/@(.*?)\*/', $str, $matches); 
$matches = $matches[1]; 

または:$matches

preg_match_all('/(?<[email protected]).*?(?=\*)/', $text, $matches); 
$matches = $matches[0]; 

どちらも結果は等しい:

Array 
(
    [0] => I am earning 
    [1] => I am going 
) 
+0

これらの '@'/'*'をアサーションにしたいと思うかもしれません。彼は結果にそれらを望んでいない。 –

+0

$ found = $ matches [0];エコー$が見つかりました。 //結果 "array"; – pzztzz

+0

@pzztzz:それは配列なので、単にそれをエコーすることはできません。 –

1

使用preg_match_all()

$text = 'Hello dear friend, my name is Jacky. I am 25 years old and @I am earning* $500 per month, but @I am going* to earn more'; 
preg_match_all("/(?<[email protected]).*?(?=\*)/", $text, $found); 

一致するものは$foundに格納されます。

関連する問題