我想从字符串中获取344747585151010c745359555d581a575b59
。
[a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="344747585151010c745359555d581a575b59"]
我尝试使用以下PHP进行捕获:
preg_match_all("/<a [^>]*data-cfemail=\"?([^\">]+)\"?>/", $input_lines, $output_array);
答案 0 :(得分:0)
您的字符串中的符号不能少于或大于。试试:
data-cfemail="?([^"\]]+)(?:"|])
演示:https://regex101.com/r/JoImnS/2/
请注意,此正则表达式比可能的要宽松。我认为封装data-cfemail
的双引号是可选的,否则可以简化。
答案 1 :(得分:0)
您可以使用data-cfemail
上的 positive look-behind ,然后直接匹配紧随其后的任何数字或小写字母:
/(?<=data-cfemail=")[\da-z]+/
打破这一点:
(?<=data-cfemail=")
-匹配data-cfemail="
之后的所有内容[\da-z]
-匹配任何数字或小写字母+
-匹配一个或多个数字/小写字母 preg_match("/(?<=data-cfemail=")[\da-z]+/", $input_line, $output_array);
返回:
array(1
0 => 344747585151010c745359555d581a575b59
)
可以在PHPLiveRegex here 上看到它。