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

文字列に一貫したパターン,が含まれている場合、use explode()非常に簡単で、正規表現ロジックのリスクを心配する必要はありません。それ以外の場合は使用してくださいregex

于 2013-07-08T01:31:36.100 に答える
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 に答える
0

正確に正規表現が必要な場合(文字列を分解しない)、これを試してください:

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

UPD がエラーを検出し、コードが更新されました

于 2013-07-08T01:41:54.933 に答える