2011-02-24 3 views
0

Мне нужна помощь с этим скриптом preg_match. Я хочу иметь текст, который находится внутри bbcode. Таким образом, это будет строка: [caption id="attachment_123" align="alignleft" width="100" caption="This is the text that I want"]Как я могу получить текст внутри bbcode?

Как вы это сделаете? Важно также, что значения типа id и align не будут одинаковыми все время. Я попробовал что-то вроде preg_match('#\[caption(?:.*?)caption=\"(.*?)\"\]#s',$result,$array);

Благодарим за помощь! phpheini

ответ

0

Мое предложение:

Заменить [ и ] в < и > затем преобразовать эту строку в объект XML, используя SimpleXML и доступ caption как свойство созданного объекта.

$input = '[caption id="attachment_123" align="alignleft" width="100" caption="This is the text that I want"]'; 
$input = str_replace(array('[', ']'), array('<', '>'), $input); 

$object = new SimpleXML($input); 

echo $object->caption; 

Чистое и простое. Regexp и HTML/BBCode является болезненным.

+0

Если я не ошибаюсь, то это дает мне текст между элементами заголовка. Но это не то, что я хочу. – phpheini

+0

Я не думаю, что это было бы правильным решением. Подумайте, что будет '[script src =" http://attacker-site.com/attack.js "] [/ script]' do. – metrobalderas

+0

У вас есть другой способ или вы знаете, что не так с моим скриптом? Я не понимаю, почему он не работает. – phpheini

Смежные вопросы