Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Regex 缺少html标记属性时未捕获正则表达式_Regex_Html Parsing - Fatal编程技术网

Regex 缺少html标记属性时未捕获正则表达式

Regex 缺少html标记属性时未捕获正则表达式,regex,html-parsing,Regex,Html Parsing,当html链接没有href=”时,我很难让这个正则表达式正常工作http://www.example.com“。(…)始终在每个页面上,但是一些锚定标记缺少href属性 就是在这里,我的尝试失败了,因为当href=“”在那里时,我可以用 另一方面,当案例与下面的案例类似时,如果缺少一个或多个href,则即使是具有href属性和值的案例也不会被捕获。在我下面的示例中,它至少应该捕获组 我使用的正则表达式可以在这里看到: 在LinkedIn上关注我们 提前感谢您在这个问题上的帮助,我

当html链接没有
href=”时,我很难让这个正则表达式正常工作http://www.example.com“
始终在每个页面上,但是一些锚定标记缺少
href
属性

就是在这里,我的尝试失败了,因为当
href=“”
在那里时,我可以用

另一方面,当案例与下面的案例类似时,如果缺少一个或多个
href
,则即使是具有
href
属性和值的案例也不会被捕获。在我下面的示例中,它至少应该捕获组

我使用的正则表达式可以在这里看到:

  • 在LinkedIn上关注我们

提前感谢您在这个问题上的帮助,我已经找到了很多可能的解决方案,但没有找到正确的解决方案。

回答我的问题,并在多次尝试解决问题后,根据问题的状态使用regex解决问题,同时也在前来帮助我解决问题的人的帮助下,我找到了一个解决方案,可用于元素上缺少的
href=“”
属性

由于
curl
的结果可能附带或不附带,但块始终存在,因此我为三个链接添加了以下php代码:

$result = str_replace('<a id="facebooklink"','<a href="NULL" id="facebooklink"', $result);
$result = str_replace('<a id="twitterlink"','<a href="NULL" id="twitterlink"', $result);
$result = str_replace('<a id="linkedinlink"','<a href="NULL" id="linkedinlink"', $result);

$result=str\u replace('我很困惑。如果你链接的正则表达式期望
href
位于文本中有
id
的地方,那么它显然无法匹配。如果正则表达式的一个标记不能匹配,那么整个正则表达式都会失败。看起来你希望正则表达式的一部分能够找到一种独立于正则表达式其余部分的匹配方法。是吗?这是不是正则表达式的工作方式。我想做的是,如果其中一个元素缺少href,至少它会与其他元素匹配。我真的不知道如何使用条件正则表达式语句。我甚至尝试了
(?:(href=“(*?))
但是没有成功。我不认为只有一个正则表达式就可以做到这一点。你可以先找到
ul
标记,然后搜索那些子字符串。但是一般来说,正则表达式不是匹配HTML的好工具。我想我有一个解决这个问题的方法。我将进行测试,如果它按预期工作,我将在这里发布它作为回复这就是问题所在。这对你有用吗?相当粗糙:-)你为什么不用
/
    (.*)/gum
来获取div的内容,并用类似
/的东西来查找每个链接。我试过Christoph,但在这一过程中发现了一些不匹配的东西。这个粗糙的系统现在运行得很好:)没有失败。谢谢你。
$result = str_replace('<a id="facebooklink"','<a href="NULL" id="facebooklink"', $result);
$result = str_replace('<a id="twitterlink"','<a href="NULL" id="twitterlink"', $result);
$result = str_replace('<a id="linkedinlink"','<a href="NULL" id="linkedinlink"', $result);