1

これは私の画像 URL PHP コードです。

$GetImage = ' https://lh6.ggpht.com/hWXw7YRl9DpSMewd29xT9rvxcgnmGXeXSY9FTaPc3cbBCa-JO8yfwSynmD5C1DLglw=w124 ';

preg_match_all("/https://\w\w\d.\w+.com/[\w-]+=\w\d{2,3}/", $GetImage, $Result, PREG_SET_ORDER);

私にとってはうまくいきますが、「[\w-]」パターンの結果を抽出したい、つまり、「hWXw7YRl9DpSMewd29xT9rvxcgnmGXeXSY9FTaPc3cbBCa-JO8yfwSymmD5C1DLglw」この文字列を画像 URL から抽出したい...

この問題を解決するために誰か助けてください....

ありがとう

4

2 に答える 2

1

正規表現を使用して URL 全体を一致させようとするのはやり過ぎだと思います。まず、PHP の組み込み関数parse_url()を使用して URL を解析することをお勧めします。

<?php

$str = 'https://lh6.ggpht.com/hWXw7YRl9DpSMewd29xT9rvxcgnmGXeXSY9FTaPc3cbBCa-JO8yfwSynmD5C1DLglw=w124';

// Parse the URL before applying a regex. Only get the path part. Use substring to remove the leading slash
$path = substr( parse_url( $str, PHP_URL_PATH ), 1 );

$pattern = '/([^=]+)/';
$matches = array();

if ( preg_match( $pattern, $path, $matches ) ) {
    // Regex matched

    $id = $matches[1];

    // Outputs: string 'hWXw7YRl9DpSMewd29xT9rvxcgnmGXeXSY9FTaPc3cbBCa-JO8yfwSynmD5C1DLglw' (length=66)
    var_dump( $id );
}

?>

スニペットはドメイン名をチェックしないことに注意してください。parse_url()関数がパスのみを返すように制限するのではなく、他の部分も返すように制限することで、そのようにスクリプトを簡単に調整できます。

于 2013-02-23T10:05:20.657 に答える
0

このようにしてみてください

$GetImage = 'https://lh6.ggpht.com/hWXw7YRl9DpSMewd29xT9rvxcgnmGXeXSY9FTaPc3cbBCa-JO8yfwSynmD5C1DLglw=w124';
preg_match_all('#https://.*\.com/([\w-]+=\w\d{2,3})#iU', $GetImage, $match, PREG_SET_ORDER);
print_r($match);
于 2013-02-23T09:07:44.340 に答える