如何使用Strpos()在针后找到下一个字符串

时间:2011-02-01 19:17:15

标签: php strpos

我正在使用PHP 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")来检测是否存在SCREENSHOT,但是我想在SCREENSHOT之后获取链接,即mysite.com/screenshot.jpg。以类似的方式,我想检测描述是否包含LINK,然后返回mysite.com/link.html

如何使用strpos()然后返回以下字词?我假设这可能是用RegEx完成的,但我不确定。下一个词是“针后的空格,后面跟着任何东西,然后是空格”。

谢谢!

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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);

我正在使用积极的外观来获得你想要的东西。

答案 2 :(得分:1)

或“旧”方式......: - )

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