0

我正在做一些 DOM 解析,我有一些字符串需要清理,它们看起来像这样:

$str1 = "var arrayImg=new Array();arrayImg[0]=
http://somepage.com/2013-5-11/1/1.jpg
;getImgString()";


$str2 = "var arrayImg=new Array();arrayImg[0]=
http://somepage.com/2013-5-11/1/1.jpg
;arrayImg[0]=
http://somepage.com/big/qingliang/2013-5-11/1/2.jpg
;getImgString()"


$str3 = "var arrayImg=new Array();arrayImg[0]=
http://somepage.com/2013-5-11/1/1.jpg
;arrayImg[0]=
http://somepage.com/2013-5-11/1/2.jpg
;arrayImg[0]=
http://somepage.com/2013-5-11/1/3.jpg
;getImgString()"

等等等等,你可以看到系统,我只需要字符串中的最后一个URL,字符串的数量是可变的,字符串中的链接数量也是如此,但我只需要每个字符串中的最后一个链接。

我应该使用 REGEX 还是一系列爆炸?

4

3 回答 3

1

explode

$arr = explode(';',$str);
$arr = $arr[count($arr) - 2]; // get the last link
$arr = trim($arr,"arrayImg[0]="); //here you will get only the last link

现场演示

大多数人都陷入了是否必须使用正则表达式或任何其他预定义函数的境地。如果您的任务可以用它们完成,您必须使用预定义函数,否则如果它们都不能完成您的任务,则使用正则表达式。

于 2013-07-08T01:30:06.097 回答
1

如果字符串包含一致的模式, use explode(),它就更容易了,您不必担心正则表达式逻辑的风险。regex否则使用。

于 2013-07-08T01:31:36.100 回答
0

如果你想要完全正则表达式(不爆炸字符串)试试这个:

preg_match_all ("/http\S+/", $str, $matches);
$link = $matches[0][count($matches[0])-1];

UPD 发现错误,代码已更新

于 2013-07-08T01:41:54.933 回答