1

这是我的图片网址 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-JO8yfwSynmD5C1DLglw”这个字符串...

请任何人帮助我解决这个问题....

谢谢

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 回答