2012-04-25 95 views
0

我有这种形式的字符串与HTML实体将字符串转换为数组:以相同的顺序

<strong>dsds </strong><em>sdqsd </em><span style='text-decoration: underline;'>test</span> 

,我希望把它放在一个关联数组:

array('strong' => 'dsds' , 'em' => 'sdqsd' , 'underline' => 'test'); 

在这种数组中元素的顺序必须与它们在字符串中的顺序相同。

这意味着如果我有,例如:

<span style='text-decoration: underline;'>test</span><strong>dsds </strong><em>sdqsd </em> 

我得到:

array('underline' => 'test', 'strong' => 'dsds' , 'em' => 'sdqsd'); 

我试图通过在循环中使用strpos这样做,但,这是一个很大的迭代specialy如果我有一个大字符串,所以有更简单的方法使用正则表达式?

谢谢。

+1

你的问题不清楚你想去多深。有什么预期的结果:'abc def'? RegEx不适合这种情况,您需要使用HTML解析器。 – 2012-04-25 13:22:17

+0

这绝对属于用正则表达式解析HTML的保护伞,正如我们都知道的(必须链接)[你不应该](http://stackoverflow.com/questions/1732348)... – DaveRandom 2012-04-25 13:26:43

+0

感谢您的建议,我会尝试php的DOMDocument,但我仍然会在维护订单时遇到问题 – 2012-04-25 13:28:11

回答

1

1,只有在每个解析的HTML语句只有一种类型的每种类型的情况下,才可以将标签名称用作数组索引。

2,也许这个库将帮助:http://simplehtmldom.sourceforge.net/

3或使用正则表达式创建自定义分析器。这是我真正不会建议的解决方案,因为CPU性能要求很高。