如何确定html主体中的子字符串是否是超链接的一部分



我一直在思考的奇怪问题。我有一个包含HTML的字符串,其中可能有超链接

Hello this is my EXAMPLE string of html here's a <tag> and here's another </tag>. Blah blah I'm going to hyperlink some stuff with <a href="http://www.example.com/> anchor text </a> and then finish my sentence.

如上所述,短语anchor text是指向example.com的超链接的锚文本。

我希望能够搜索像anchorexample这样的子字符串,并确定每次出现是否都是超链接的一部分,无论是锚文本、url还是a标记。

优选地,对于搜索项的每次出现,都会返回一个带有真/假的数组。不区分大小写的搜索是很好的,如果它返回匹配的事件也很好,这样我们就知道大小写了。对于上面的例子,一个理想的响应应该是这样的:

$array[0][0] = "EXAMPLE"
$array[0][1] = false
$array[1][0] = "example"
$array[1][1] = true

每次出现的索引也可能是返回的有用信息。谢谢

我认为您需要检查这三种情况。

  #<a[^>]*>[^<>]*YOURTEXT[^<>]*</a>#

包括第一种情况,

  #<a[^>][^<>]*YOURTEXT[^<>]*>[^<>]*</a>#

将涵盖第二和第三种情况。

或者你最好用一个更宽容的正则表达式来检查

  #<a[^<>]*>*[^<>]*YOURTEXT[^<>]*>*[^<>]*</a>#

然后用HTML解析器验证找到的文本是否确实是有效的a标签。第一个测试将确保您的文本在捕获的代码段中,第二个测试确保代码段确实是一个超链接。

相关内容

最新更新