我目前正在使用以下代码解析webmention端点。这适用于<link rel="webmention" href=" ">
或<link rel="http://webmention.org/" href=" ">
,但如果两者都包括在内,则无效,即<link rel="webmention http://webmention.org/" href=" ">
。我正在努力使其适应这一点。目前的代码:
if(preg_match('/<(?:link|a)[ ]+href="([^"]+)"[ ]+rel="webmention"[ ]*\/?>/i', $body, $match)
|| preg_match('/<(?:link|a)[ ]+rel="webmention"[ ]+href="([^"]+)"[ ]*\/?>/i', $body, $match)) {
$endpoint = $match[1];
} elseif(preg_match('/<(?:link|a)[ ]+href="([^"]+)"[ ]+rel="http:\/\/webmention\.org\/?"[ ]*\/?>/i', $body, $match)
|| preg_match('/<(?:link|a)[ ]+rel="http:\/\/webmention\.org\/?"[ ]+href="([^"]+)"[ ]*\/?>/i', $body, $match)) {
$endpoint = $match[1];
}
任何想法?
答案 0 :(得分:1)
我刚刚写了这篇文章,看看你是否觉得它很有用
'/\<link.+?rel=["']?(?:webmention|http\:\/\/webmention\.org\/?)['"]?.*?\>/g'
P.S。:一句忠告 - 你使用正则表达式,就像它们什么都不是。只有在没有其他方法的情况下才应该使用正则表达式,特别是如果$body
是一个大字符串,那么你真的不应该运行那么多preg_match
。干杯!