将时间戳转换为wordpress短代码

问题描述 投票:-1回答:1

我正在使用此代码来检测内容的时间戳。

  $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>';
php regex wordpress
1个回答
0
投票

你原来的正则表达式:

/(<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\.?)(?!.*?[\'])

Demo

© www.soinside.com 2019 - 2024. All rights reserved.