3

私はPHPstrpos()を使用して、テキストの段落内の針を見つけています。針が見つかった、次の単語を見つける方法に苦労しています。

たとえば、次の段落について考えてみます。

$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.";

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

strpos()次の単語を使用して返すにはどうすればよいですか?これは正規表現で行われる可能性があると思いますが、よくわかりません。次の単語は、「針の後にスペースがあり、その後に何かが続き、その後にスペースが続く」です。

ありがとう!

4

3 に答える 3

1

これは、単一の正規表現で行うことができます。

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
}
于 2011-02-01T19:55:20.767 に答える
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);

私はあなたが望むものを手に入れるために前向きな後読みを使用しています。

于 2011-02-01T19:56:40.423 に答える
1

または「古い」方法...:-)

$word = "SCREENSHOT ";
$pos = strpos($description, $word);
if($pos!==false){
    $link = substr($description, $pos+strlen($word));
    $link = substr($link, strpos($link, " "));
}
于 2011-02-01T19:57:52.113 に答える