I have a following string and I want to extract image123.jpg.
..here_can_be_any_length \"and_here_any_length/image123.jpg\" and_here_also_any_length
What about something like this :
$str = '..here_can_be_any_length "and_here_any_length/image123.jpg" and_here_also_any_length';
$m = array();
if (preg_match('#".*?/([^\.]+\.(jpg|jpeg|gif|png))"#', $str, $m)) {
var_dump($m[1]);
}
Which, here, will give you :
string(12) "image123.jpg"
I suppose the pattern could be a bit simpler -- you could not check the extension, for instance, and accept any kind of file ; but not sure it would suit your needs.
Basically, here, the pattern :
"/ : .*?/. : [^\.]+\.(jpg|jpeg|gif|png)"And the whole portion of the pattern that corresponds to the filename is surrounded by (), so it's captured -- returned in $m