2011-02-24 74 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

我的建議:

更換[]<>那麼字符串轉換爲使用SimpleXML和創建的對象的屬性訪問caption XML對象。

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

清潔和簡單。 RegexpHTML/BBCode是痛苦的。

+0

如果我沒有錯,這是做什麼給我的字幕元素之間的文本。但那不是我想要的。 – phpheini 2011-02-24 19:18:59

+0

我不認爲這會是一個合適的解決方案。試想一下'[script src =「http://attacker-site.com/attack.js」] [/ script]'會做什麼。 – metrobalderas 2011-02-24 19:56:29

+0

那麼你有另一種方式,或者你知道我的腳本有什麼問題嗎?我不明白爲什麼它不起作用。 – phpheini 2011-02-24 20:23:29