2009-10-19 2 views
0

У меня есть этот HTML-код, который я читаю из wordpress в обычный PHP-файл. Это недопустимый HTML, но Wordpress должен лишить [caption] out взять тег img и поместить его в div с надписью в качестве тега <p>. Но я хочу сделать это на PHP, без Wordpress.регулярное выражение для преобразования тегов WordPress в HTML

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

Как вы это сделаете в обычном выражении. Я как-то думаю об использовании preg_match_callback.

+0

WordPress сам написано на PHP, вы считаетесь "заимствованием" некоторые из своих функций? – VolkerK

+0

Да, это был мой первоначальный план, но это использует какой-то короткий код api, и я не уверен, какие классы включать в себя, и я даже не уверен, как вызвать функцию, которая преобразует короткий код. – jimiyash

+0

Спасибо за все ответы , Я закончил использовать ответ VolkerK и использовал wordpress. Надеюсь, я смогу использовать часть ответа партоа в будущем. – jimiyash

ответ

3

Кажется, чтобы код WordPress выполнял всю работу, в которой вы нуждаетесь, это два файла plugin.php и shortcodes.php из каталога 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); 
} 

печатает

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

Вот возможный р эксп.

$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); 

Выход

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" 
    } 
} 
Смежные вопросы