Php 要为或操作添加选项的正则表达式

Php 要为或操作添加选项的正则表达式,php,regex,Php,Regex,这是我的正则表达式,用于从页面中删除图像 preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $html, $matches 但当图像url如下所示时失败: src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Adolescent_girl_sad_0001.jpg/200px-Adolescent_girl_sad_0001.jpg" 我认为需要在上面的正则表达式中添加或操作,以允

这是我的正则表达式,用于从页面中删除图像

preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $html, $matches
但当图像url如下所示时失败:

src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Adolescent_girl_sad_0001.jpg/200px-Adolescent_girl_sad_0001.jpg"
我认为需要在上面的正则表达式中添加
操作,以允许从
/
开始的图像


文件上说管道可以正常工作。但如何将其添加到正则表达式中?

您可以避免小马的愤怒

$dom = new DOMDocument();
$dom->loadHTML($html);
$images = $dom->getElementsByTagName('img');
$sources = array();
foreach($image as $img) $sources[] = $img->getAttribute("src");

完成了

您已经在
(?:png | jpg)
部分成功使用了它,那么为什么不再次使用它呢?顺便说一句,制作
https?
比使用一些更容易。您正在维基百科页面中寻找图像链接吗?对于这些人,甚至还有一个特殊的API:可以只解析出“src”值,使用“/src=([\'”)(.+?)\1/”如果你只想要png | jpg,那么“/\'”]+。(?:png | jpg))\1/i”,但这可能也会匹配非png/jpg图像…@Niet:如果我只想得到一个图像怎么办?@Bergi添加一个简单的“如果”来检查扩展名是很简单的。一个更有效的评论应该是,我将
href
而不是
src
@Programming\u添加到您想要的图像中。如果是第一个,
$images->item(0)
就是它。如果是任意数字,请更改数字。在所有情况下,您都可以使用上述代码,然后根据需要访问
$sources
数组。@NiettheDarkAbsol:当我返回
$images->item(0)时
并回显,给出错误
可捕获的致命错误:DomeElement类的对象无法转换为中的字符串