preg_replace() Only Specific Part Of String

后端 未结 3 2049
遇见更好的自我
遇见更好的自我 2020-12-18 04:20

I always have trouble with regex, I basically have a url, for example:

http://somedomain.com/something_here/bla/bla/bla/bla.jpg

What I need is a

相关标签:
3条回答
  • 2020-12-18 04:47

    You could do this with a simple string replace:

    $image[0] = str_replace('/wp-content/uploads/', '/', $image[0]);
    

    Or if you want to use a regular expression:

    $image[0] = preg_replace('~(http://.*?)/wp-content/uploads/(.*)~', '$1/$2', $image[0]);
    
    0 讨论(0)
  • 2020-12-18 04:48

    You could do this:

    $image[0] = preg_replace('!^(http://[^/]*)/[^/]*!', '$1', $image[0]);
    

    Or you might consider just splitting the string to work on its individual components:

    $parts = explode('/', $image[0]);
    unset($parts[3]);
    $image[0] = implode('/', $parts);
    
    0 讨论(0)
  • 2020-12-18 04:49

    The following code is based on the description you provided:

    $url = 'http://somedomain.com/something_here/bla/bla/bla/bla.jpg';
    $output = preg_replace('#^(https?://[^/]+/)[^/]+/(.*)$#', '$1$2', $url);
    echo $output; // http://somedomain.com/bla/bla/bla/bla.jpg
    

    Explanation:

    • ^ : match begin of line
    • ( : start matching group 1
      • https?:// : match http or https protocol
      • [^/]+ : match anything except / one or more times
      • / : match /
    • ) : end matching group 1
    • [^/]+ : match anything except / one or more times -/ : match /
    • ( : start matching group 2
      • .* : match anything zero or more times (greedy)
    • ) : end matching group 2
    • $ : match end of line
    0 讨论(0)
提交回复
热议问题