2011-02-01 1 views
3

私はテキストの段落に針を見つけるためにPHP strpos()を使用しています。私はの針が見つかった後に次の単語を見つける方法と苦労しています。Strpos()を使用して針の後に次の文字列を見つける方法

たとえば、次の段落を考えます。

$description = "Hello, this is a test paragraph. The SCREENSHOT mysite.com/screenshot.jpg and the LINK mysite.com/link.html is what I want to return."; 

私はスクリーンショットが存在するかどうかを検出するためにstrpos($description, "SCREENSHOT")を使用することができますが、私はスクリーンショット、すなわちmysite.com/screenshot.jpg後にリンクを取得したいです。同様の方法で、説明にLINKが含まれているかどうかを検出してから、mysite.com/link.htmlを返します。

strpos()を使用して次の単語を返すにはどうすればよいですか?私はこれがRegExで行われるかもしれないと仮定していますが、わかりません。次の言葉は、「針の後の空間、それに続く空間、空間」です。

ありがとうございます!

答えて

1

または "古い" 方法... :-)

$word = "SCREENSHOT "; 
$pos = strpos($description, $word); 
if($pos!==false){ 
    $link = substr($description, $pos+strlen($word)); 
    $link = substr($link, strpos($link, " ")); 
} 
1

あなたは、単一の正規表現でこれを行うことができます:私は何をあなたを取得するには正の後読みを使用してい

$description = "Hello, this is a test paragraph. The SCREENSHOT mysite.com/screenshot.jpg and the LINK mysite.com/link.html is what I want to return."; 

$matches = array(); 
preg_match('/(?<=SCREENSHOT\s)[^\s]*/', $description, $matches); 
var_dump($matches); 
echo '<br />'; 
preg_match('/(?<=LINK\s)[^\s]*/', $description, $matches); 
var_dump($matches); 

:私は、以下のものを使用して自分のサイトにはほとんどのテストを行いました

if (preg_match_all('/(SCREENSHOT|LINK) (\S+?)/', $description, $matches)) { 
    $needles = $matches[1]; // The words SCREENSHOT and LINK, if you need them 
    $links = $matches[2]; // Contains the screenshot and/or link URLs 
} 
0

欲しいです。

+0

甘い、回答に感謝します!これらの両方が働くと、私はどちらが行くかを選択します。 :)文字列関数とRegExは私の強い訴訟ではありません! – scottystang

関連する問題