1

次の名前の変数があるとします。

src="http://www.test.com/1455/"||src="http://www.test.com/image/1456/"||

今、私はURL部分を取得したいhttp://www.test.com/1455/.

以下は私のコードですが、うまくいきません。

$url = 'src="http://www.test.com/1455/"||src="http://www.test.com/image/1456/"||';

$a = explode("src=\"",$url); 
$b = explode("||",$a); 
$handle = fopen("output.txt", 'a')) !== FALSE
fwrite($handle2, "{$b[0]}\n");
4

3 に答える 3

1

より一般的なケースの解決策。このコードは、文字列を URL クエリ形式に変換し、parse_str関数を介して解析します

$url = 'src="http://www.test.com/1455/"||src="http://www.test.com/image/1456/"||var1=aaa||var2=bbb||var2=bbb';
$url = str_replace('||', '&', $url);
$url = preg_replace('/([^\]])=/', '$1[]=', $url);

$params = array();
parse_str($url, $params);

print_r($params);

出力:

Array
(
    [src] => Array
        (
            [0] => "http://www.test.com/1455/"
            [1] => "http://www.test.com/image/1456/"
        )

    [var1] => Array
        (
            [0] => aaa
        )

    [var2] => Array
        (
            [0] => bbb
            [1] => bbb
        )

)

次に、この配列で必要なことをすべて行うことができます

于 2012-08-23T06:52:29.090 に答える
1

これに似た正規表現を使用します。もちろん、必要に応じてこれを変更できます。これは単なる例ですが、あなたのために働くでしょう

$url = 'src="http://www.test.com/1455/"||src="http://www.test.com/image/1456/"||';
preg_match_all('/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $url, $result, PREG_PATTERN_ORDER);
print_R($result);

それは印刷されます

Array
(
    [0] => Array
        (
            [0] => http://www.test.com/1455/
            [1] => http://www.test.com/image/1456/
        )

)

これをテキストファイルに書きます:

$handle = fopen("output.txt", 'a');
foreach($result[0] as $url){
    fwrite($handle, $url."\n");     
}
fclose($handle);

正規表現の詳細はこちらhttp://php.net/manual/en/function.preg-match.php

于 2012-08-23T06:15:41.380 に答える
0
$url = 'src="http://www.test.com/1455/"||src="http://www.test.com/image/1456/"||';

$a = explode("||",$url); 

$handle = fopen("output.txt", 'a');
foreach($a as &$val)
{
   $val = str_replace("src=\"","",$val);
   $val  = str_replace("\"","",$val);
   fwrite($handle, "{$val}\r\n");
}
于 2012-08-23T06:15:29.400 に答える