preg_match() for image我是怎么做的


preg_match() for image how do I do it?

我正在搜索代码以验证用户提交的URL,以确保它以.jpg, .png.jpeg结束,但我找不到它。

我想用preg_match()来做。

您可以像这样使用preg_match:

if(preg_match('/'.(jpg|png|jpeg)$/', $url)) {
}

但是还有另一种方法使用pathinfo():

$extension = pathinfo($url, PATHINFO_EXTENSION);
if (in_array($extension, array('jpg', 'png', 'jpeg'))) {
}

如果需要更严格的验证,则首先解析URL并从path部分获取扩展名:

$parts = parse_url($url);
$extension = pathinfo($parts['path'], PATHINFO_EXTENSION);
if (in_array($extension, array('jpg', 'png', 'jpeg'))) {
}

假设您的URL在变量$url中,这应该可以工作:

$url = 'https://www.google.com/images/srpr/logo11w.png';
$an_image = preg_match("/^.*'.(jpg|jpeg|png|gif)$/i", $url);
if ($an_image) {
  echo 'This is an image!';
}
$post_content = '<a href="http://www.test.com" title="test">test.com</a> there is  https://img.srgcdn.com/e//aUVTYlRFNXgyeFBQUGZNUk1DSzMuanBn.jpg  another example <a href="http://www.test1.com">test1.com</a> one more here too <a href="http://www.test2.com" title="test2">test2.com</a>   https://www.youtube.com/watch?vi=hjsdGD08xfg9c  ';
preg_match_all('/'b(?:(?:https?|ftp):'/'/|www'.)[-a-z0-9+&@#'/%?=~_|!:,.;]*'.(?:jpg|gif|png)/i', $post_content, $matches);
print_r($matches);