Php 我的正则表达式有什么错误?
我想匹配所有Php 我的正则表达式有什么错误?,php,html,regex,Php,Html,Regex,我想匹配所有href属性,这些属性包含一个没有url的字符串,该字符串是本地文件路径,因此我编写以下php代码: preg_match_all('/href="[^(http|https):\/\/](.*?)"/is',$tidyHtml,$matches); 这将返回如下数组: Array ( [0] => tatic/css/custom.css ) 但是当你看不到html源代码时,href属性是static/css/custom.css而不是static/css/cus
href
属性,这些属性包含一个没有url的字符串,该字符串是本地文件路径,因此我编写以下php代码:
preg_match_all('/href="[^(http|https):\/\/](.*?)"/is',$tidyHtml,$matches);
这将返回如下数组:
Array
(
[0] => tatic/css/custom.css
)
但是当你看不到html源代码时,
href
属性是static/css/custom.css
而不是static/css/custom.css
你必须去掉方括号。它们表示要匹配的字符列表,而不是节
您还必须使用反向查找而不是反向字符类。查看此带有此匹配项的正则表达式:
/(?<=href=")(?!https?:\/\/)(.*?)"/is
/(?您必须去掉方括号。它们表示要匹配的字符列表,而不是节
您还必须使用反向查找而不是反向字符类。请参阅此带有此匹配项的正则表达式:
/(?<=href=")(?!https?:\/\/)(.*?)"/is
/(?要解决此问题,必须像这样使用负前瞻
/href="(?!https?:\/\/)(.*?)"/is
它基本上会检查字符串中任何一点是否包含href=“
”,并通过可选的s
后跟://
查看下一个字符是否为http
。
如果不是这种情况,它会将迭代器向前移动,并将所有内容捕获到第一个双引号“
如何将src属性添加到此正则表达式?–Mokhtarabadi
通过使用or操作检查href
或src
/(?:href|src)="(?!https?:\/\/)(.*?)"/is
然后将是对href
和src
属性的结果正则表达式检查,只匹配URL中没有协议的引用。要解决此问题,必须像这样使用负前瞻
/href="(?!https?:\/\/)(.*?)"/is
它基本上会检查字符串中任何一点是否包含href=“
”,并通过可选的s
后跟://
查看下一个字符是否为http
。
如果不是这种情况,它会将迭代器向前移动,并将所有内容捕获到第一个双引号“
如何将src属性添加到此正则表达式?–Mokhtarabadi
通过使用or操作检查href
或src
/(?:href|src)="(?!https?:\/\/)(.*?)"/is
然后将是对href
和src
属性的结果正则表达式检查,只匹配URL中没有协议的引用。为什么这个正则表达式有方括号?@Unihedron-编写快速自定义正则表达式(这不起作用,您必须寻求帮助)之间有区别从一些HTML中提取代码,并编写一个使用正则表达式的正确HTML解析器(答案似乎是这样的)。为什么这个正则表达式有方括号?@Unihedron-编写一个快速的自定义正则表达式(这不起作用,你必须寻求帮助)是有区别的从一些HTML中提取代码,并编写一个使用正则表达式的正确HTML解析器(答案似乎是这样的)。如何向这个正则表达式添加src属性?对不起,我是伊朗人,英语说得不好,我想/(?@Unihedron非常感谢。如何在这个正则表达式中添加src属性?对不起,我是伊朗人,英语说得不好,我想混合/(?@Unihedron非常感谢。谢谢,你是对的,我感到困惑。但是我不知道如何回滚到你的修订版,Unihedron。谢谢,你是对的,我感到困惑。但是我不知道如何回滚到你的修订版,Unihedron。