2017-12-31 91 views
-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>'; 
+0

をしかし、あなたはあなたのコンテンツを取得、そこからdiv要素を入れていない...しかし、あなたの正規表現であなたがDIVています? ? –

+0

はい私はdivのクラスは "タイムスタンプ"を持っているタイムスタンプを検出しませんdivの平均を持っている –

答えて

0

あなたのオリジナルの正規表現の作品ではない:

/(<div\s+[^<]*?\bclass="[^<"]*\btimestamp\b[^<]*?>[^<]*)?(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?["\'])/ 

最後に、あなたは否定的な表情をしました先に(?!。*?[ "\ '])一致している "...マークし、2回目の自分のコンテンツが

引用符が含まれてい

" http://w ...つまりを持っていますなぜ捕らえられていないのか。

はちょうどあなたの正規表現から「マーク削除:

(<div\s+[^<]*?\bclass="[^<"]*\btimestamp\b[^<]*?>[^<]*)?(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?[\']) 

Demo

関連する問題