Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复杂(?)正则表达式_Php_Html_Regex - Fatal编程技术网

Php 复杂(?)正则表达式

Php 复杂(?)正则表达式,php,html,regex,Php,Html,Regex,在过去的几天里一直在尝试各种各样的正则表达式,没有乐趣 尝试对非常有限的html标记子集(特别是img标记)进行一些正则表达式修改,但仅限于以下内容: <img src="picture.jpg"> <img src="site.com/picture.jpg"> 而不是像这样的: <img src="picture.jpg"> <img src="site.com/picture.jpg"> 此外,这些标记与它们前后的其他文本混合

在过去的几天里一直在尝试各种各样的正则表达式,没有乐趣

尝试对非常有限的html标记子集(特别是img标记)进行一些正则表达式修改,但仅限于以下内容:

<img src="picture.jpg">
<img src="site.com/picture.jpg">

而不是像这样的:

<img src="picture.jpg">
<img src="site.com/picture.jpg">


此外,这些标记与它们前后的其他文本混合在一起,因此正则表达式需要忽略这些内容,但仍然可以处理标记。我一辈子都搞不懂,有人能帮忙吗?

所以,你想匹配
格式中的所有字符串,其中
..
是一个不包含
的子字符串“
/
字符?您不应该为此使用正则表达式。使用简单的HTMLDOM或DomDocumentAndrea-yep。事实上,我认为斜杠是可以的(本地路径),但第二个句点不是,这表明图片是在其他地方托管的(我们在本地文件夹名称中不使用句点)。我的问题是,我想不出一种方法来说“匹配所有标记(在(最短匹配之间))中没有超过一个句点,忽略其余的”。这是regex本身可以做到的吗?谢谢,但不,我事先不知道该站点(可以是任何站点,任何扩展。我试图做你的想法,但对“任何事情,然后一个周期,然后任何事情,然后另一个周期(两个周期表示非本地路径)进行负面展望),但它只匹配所有字符。或者,如果字符之外有句点,则不匹配任何字符。
<?php
$test = '<img src="picture0.jpg"><img src="site.com/picture1.jpg">';

preg_match_all('/<img src="(?!site.com\/)(.*?)">/',$test,$matches);

echo '<pre>',print_r($matches),'</pre>';