PHP使用正则表达式从文本中分割最后一个url


php divide last url from text use regex

我有一个正则表达式问题。用正则表达式区分最后一个url的最好方法是什么?在我的文章的最后总是有一个链接。

文本中的一个url。

$str = 'blah blah blah http://www.google.com.hk';

我想使用

$matches = split("http://", $str);
$matches[0]; //text part
"http://".$matches[1]; //url part

preg_match_all("/http:'/'/[^ ]+/", $str, $matches);
var_dump($matches); //url part
preg_replace("/http:'/'/[^ ]+/","", $str);//text part

那么文本中有多个url呢?

例如:

$str = 'blah blah blah http://www.google.com.hk blah blah blah http://cn.yahoo.com';
// text part should be `blah blah blah http://www.google.com.hk blah blah blah`
// last url part should be `http://cn.yahoo.com`
// may be more and more urls in the text `blah blah blah http://www.baidu.com` after `http://cn.yahoo.com`...

你不需要一个正则表达式-你可以将strpos与substr结合使用。

$str = 'blah blah blah http://www.google.com.hk blah blah blah http://cn.yahoo.com';
echo substr( $str, 0, strrpos( $str, "http://")) . "'n"; // Text part
echo substr( $str, strrpos( $str, "http://")); // URL
输出:

blah blah blah http://www.google.com.hk blah blah blah 
http://cn.yahoo.com
演示