2009-10-19 10 views
0

J'ai ce HTML que je lis de WordPress dans un fichier PHP régulier. Ce n'est pas du HTML valide, mais wordpress est censé enlever la légende et prendre la balise img, et la mettre dans un div avec la légende comme balise <p>. Mais je veux le faire en PHP, sans wordpress.expression régulière pour convertir des balises WordPress en HTML

[caption id="" align="alignnone" width="190" caption="my caption"]html image tag would got here but got stripped[/caption] 

Comment le feriez-vous dans une expression régulière. Je pense en quelque sorte à utiliser preg_match_callback ici d'une manière ou d'une autre.

+0

est lui-même écrit wordpress en php, avez-vous pensé "emprunter" certaines de ses fonctions? – VolkerK

+0

oui, c'était mon plan original, mais c'est en utilisant une sorte de code API api et je ne sais pas quelles classes à inclure en premier et je ne sais même pas comment appeler la fonction qui convertit le code court – jimiyash

+0

Merci pour toutes les réponses , J'ai fini par utiliser la réponse de VolkerK et utiliser le wordpress. J'espère pouvoir utiliser une partie de la réponse de Partoa à l'avenir. – jimiyash

Répondre

3

Il semble que pour que le code wordpress fasse le travail dont vous avez besoin, il suffit d'avoir les deux fichiers plugin.php et shortcodes.php du répertoire wp-includes.

require 'wordpress/wp-includes/plugin.php'; 
require 'wordpress/wp-includes/shortcodes.php'; 
add_shortcode('caption', 'handleCaption'); 
$content = '[caption id="foo" style="bar"]Marry had a little lamb[/caption]whose fleece was white as snow'; 
do_shortcode($content); 

function handleCaption($attributes, $content='') { 
    var_dump($attributes, $content); 
} 

impressions

array(2) { 
    ["id"]=> 
    string(3) "foo" 
    ["style"]=> 
    string(3) "bar" 
} 
string(23) "Marry had a little lamb" 
1

Voici une possible reg exp.

$res = preg_match_all('/\[caption(.*?)\](.*?)\[\/caption\]/iU', 
'[caption id="" align="alignnone" width="190" caption="my caption"]html image tag would got here but got stripped[/caption]', 
$matches); 


var_dump($res, $matches); 

La sortie

int(1) 
array(3) { 
    [0]=> 
    array(1) { 
    [0]=> 
    string(122) "[caption id="" align="alignnone" width="190" caption="my caption"]html image tag would got here but got stripped[/caption]" 
    } 
    [1]=> 
    array(1) { 
    [0]=> 
    string(57) " id="" align="alignnone" width="190" caption="my caption"" 
    } 
    [2]=> 
    array(1) { 
    [0]=> 
    string(46) "html image tag would got here but got stripped" 
    } 
} 
Questions connexes