我正在使用此代码来检测内容的时间戳。
$pattern = '/(<div\s+[^<]*?\bclass="[^<"]*\btimestamp\b[^<]*?>[^<]*)?(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?["\'])/';
$foundTimestamp = preg_replace_callback($pattern, array($this, 'spp_ts_callback'), $content);
function spp_ts_callback($m) {
return empty($m[1]) ? '[spp-timestamp time="'. $m[0] . '"]' : $m[0];
}
例如,它适用于计划内容
$content= '05:10 Hani shares some time-saving podcast automation tips';
但是,如果我只是在它旁边放一个链接它不起作用
$content='05:10 Hani shares some time-saving podcast automation tips <a href="http://wordpress.org">http://wordpress.org</a>';
你原来的正则表达式:
/(<div\s+[^<]*?\bclass="[^<"]*\btimestamp\b[^<]*?>[^<]*)?(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?["\'])/
最后,你已经放了一个负面的展望(?!。*?[“\']),它与”标记......和你的第二个内容有关
“http://w包含
引号......这就是它没有被捕获的原因。
刚删除了“正则表达式中的标记:
(<div\s+[^<]*?\bclass="[^<"]*\btimestamp\b[^<]*?>[^<]*)?(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?[\'])