0

我整天都在尝试实现这一点,但没有任何进展。

我有这部分代码

 $LookUpData =array(
        ID1 =>  '<div> First </div>',
        ID2 => '<p>Second</p>'
    );

$tagData = $LookUpData[ID1];
print_r($tagData);

在这种情况下我得到的输出是:首先

理想的情况是如果我会得到:

           0 => <div>
           1 => First
           2 => </div>

我希望您了解我的问题和我的需要。欢迎各种帮助。

4

2 回答 2

0
$matches = array();
preg_match("/(<[^>]+>)(.*)(<\/[^>]>)/", "<div>First</div>", $matches);
var_dump($matches);

应该足以让你开始

于 2013-10-01T12:35:51.613 回答
0

解决您问题的代码

<?php
$LookUpData =array(
        'ID1' =>  '<div> First </div>',
        'ID2' => '<p>Second</p>'
);

$tagData = $LookUpData['ID1'];

preg_match('#(<.*?>)(.*)(</.*?>)#', $LookUpData['ID1'],$m);
unset($m[0]);
print_r($m);
?>

代码的输出:

 Array ( [1] => <div> [2] => First [3] => </div> )

解释:

  • 当您想为数组命名键时,您应该使用 '' 或 ""。如果你不这样做,你会注意到它不是恒定的
  • Preg match 完全符合您的需求,因为它在字符串中查找模式匹配。

图案说明:

  • ##- 是定义模式开始和结束的字符
  • (<.*?>)- 是查找 <> 之间的任何字符的子模式,它会适合

    等等

  • (.*)- 这是任何字符的模式(几乎所有)
  • (</.*?>)- 这次关闭标签的另一个子模式与第一个几乎相同。

在线演示- 请注意,在浏览器中正确显示的代码有点不同(html标签)

于 2013-10-01T12:55:00.007 回答