2017-12-31 59 views
-1

Ich verwende diesen Code, um den Zeitstempel vom Inhalt zu erkennen.Zeitstempel in Wordpress-Shortcode umwandeln

$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]; 
    } 

es funktioniert auf Plan Inhalt zum Beispiel

$content= '05:10 Hani shares some time-saving podcast automation tips'; 

Aber wenn ich nur einen Link setzen daneben es funktioniert nicht

$content='05:10 Hani shares some time-saving podcast automation tips <a href="http://wordpress.org">http://wordpress.org</a>'; 
+0

aber nicht die div, von dem Sie Ihre Inhalte holen gesetzt haben ... aber in Ihrem regex Sie div haben ?? ? –

+0

Ja, ich habe div es bedeutet, es wird Zeitstempel nicht erkennen, die div Klasse "Zeitstempel" haben –

Antwort

0

Ihre ursprüngliche Regex:

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

Am Ende haben Sie ein negatives Aussehen voraus (?!. *? [ "\ ']), die Spiele " Marken ... und 2. Inhalt hat

" http://w die

Anführungszeichen enthält ... das ist warum ist es nicht gefangen.

entfernt einfach die "Marke von Ihrem regex:

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

Demo

Verwandte Themen