没有http时如何从字符串中获取JPG? php
How to get JPG from string when it doesn't have http? php
当有重复的特定字符时,我很难做到这一点,例如:
$content = '<!CDATA[/2018/08/hello.jpg]]>{s:4:"file";s:7:"yes.jpg"';
我只能找到这样的建议:
$pattern = '/(?:http|https):\/\/\S+\.(?:jpg|jpeg)/';
preg_match_all ($pattern, $content, $matches);
一直在寻找 http/https 以了解从哪里获取它,但在我的情况下,它只是部分 url 和 start/end 具有不同的字符 - /x.jpg]
或 "x.jpg"
有没有可能在一个由很多这样的例子组成的字符串中找到所有的 .jpg 图片?在此示例中,它会找到 hello.jpg 和 yes.jpg.
对于您的示例数据,您可以使用:
<!CDATA\[.*?/\K\w+\.\jpg(?=\]\])
说明
<!CDATA\[
匹配 <!CDATA[
.*?/
非贪婪匹配任意字符零次或多次并匹配正斜杠
\K
忘记是之前匹配的
\w+\.\jpg
匹配1+个单词字符后跟.jpg
(?=\]\])
肯定的前瞻断言以下是 ]]
$re = '@<!CDATA\[.*?/\K\w+\.\jpg(?=\]\])@';
$str = '<!CDATA[/2018/08/hello.jpg]]><!CDATA[/2018/08/another.jpg]]>';
preg_match_all($re, $str, $matches);
print_r($matches[0]);
当有重复的特定字符时,我很难做到这一点,例如:
$content = '<!CDATA[/2018/08/hello.jpg]]>{s:4:"file";s:7:"yes.jpg"';
我只能找到这样的建议:
$pattern = '/(?:http|https):\/\/\S+\.(?:jpg|jpeg)/';
preg_match_all ($pattern, $content, $matches);
一直在寻找 http/https 以了解从哪里获取它,但在我的情况下,它只是部分 url 和 start/end 具有不同的字符 - /x.jpg]
或 "x.jpg"
有没有可能在一个由很多这样的例子组成的字符串中找到所有的 .jpg 图片?在此示例中,它会找到 hello.jpg 和 yes.jpg.
对于您的示例数据,您可以使用:
<!CDATA\[.*?/\K\w+\.\jpg(?=\]\])
说明
<!CDATA\[
匹配<!CDATA[
.*?/
非贪婪匹配任意字符零次或多次并匹配正斜杠\K
忘记是之前匹配的\w+\.\jpg
匹配1+个单词字符后跟.jpg(?=\]\])
肯定的前瞻断言以下是 ]]
$re = '@<!CDATA\[.*?/\K\w+\.\jpg(?=\]\])@';
$str = '<!CDATA[/2018/08/hello.jpg]]><!CDATA[/2018/08/another.jpg]]>';
preg_match_all($re, $str, $matches);
print_r($matches[0]);