【问题标题】:preg_replace() doesn't work as expectedpreg_replace() 没有按预期工作
【发布时间】:2015-07-18 18:04:10
【问题描述】:

我想改变这个网址:

https://lh3.googleusercontent.com/-5EoWQXUJMiA/VZ86O7eskeI/AAAAAAADHGs/ej6F-va__Ig/s1600/i2Fun.com-helpful-dogs-015.gif

到这里:

http://3.bp.blogspot.com/-5EoWQXUJMiA/VZ86O7eskeI/AAAAAAADHGs/ej6F-va__Ig/s1600/i2Fun.com-helpful-dogs-015.gif

这是我的代码,但它没有按预期工作:

$link = preg_replace('#^https?://.*?/(.+?/)(s\d+/)?([\w_-]+\.[\w]{3,})?$#i','http://3.bp.blogspot.com/$1s0/$3',$url);

【问题讨论】:

    标签: php regex string preg-replace


    【解决方案1】:

    这是一个简单的字符串替换。

    搜索"https://lh3.googleusercontent.com/"。替换为"http://3.bp.blogspot.com/"

    str_replace() 会这样做。我错过了什么吗?

    【讨论】:

    • 但它并不总是“lh3.googleusercontent.com”,它可以是 lh1、lh2、lh3...
    • 我如何从您的问题中知道这一点?你没有提到这个。请将此添加到您的问题中。最好有一个简短的代码 sn-p 来演示您的输入数据、正则表达式转换、预期结果和实际结果的一些示例。
    【解决方案2】:
    $s = "https://lh3.googleusercontent.com/-5EoWQXUJMiA/VZ86O7eskeI/AAAAAAADHGs/ej6F-va__Ig/s1600/i2Fun.com-helpful-dogs-015.gif"; 
    $path = parse_url($s);
    
    echo 'http://3.bp.blogspot.com' . $path['path'];
    

    更新你不能接收一个url的所有部分,而只接收需要的部分

    echo 'http://3.bp.blogspot.com' . parse_url($s, PHP_URL_PATH);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2011-04-05
      • 2021-10-19
      • 2020-03-18
      • 2012-06-14
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多