如何在<br/>标签上爆炸字符串

时间:2013-11-25 14:54:42

标签: php

我有一个像

这样的字符串
Overall Queen Poster <br /> Queen Poster Headboard:<br /> Queen Poster <br /> Queen Footboard  <br /> Queen Poster Rails: 62.28"W x 84.02"D x 18.07"H - 37lbs.

如何在
标签上展开它以便我可以获取数组中的值?

我试过这个

   $myString =  "Overall Queen Poster <br /> Queen Poster Headboard:<br /> Queen Poster <br /> Queen Footboard  <br /> Queen Poster Rails: 62.28"W x 84.02"D x 18.07"H - 37lbs";
    $myArray = explode("\n",$myString);
    print_r($myArray);

但没有得到正确的结果。

2 个答案:

答案 0 :(得分:25)

那是因为<br />!= \n

您可以使用正则表达式对其进行拆分,以确保获得所有BR标记(<br><br /><br/><br class="break">,{{1}等等。)

<强>代码

<BR>

<强>输出

<?php
    $myString = 'Overall Queen Poster <br /> Queen Poster Headboard:<br /> Queen Poster <br /> Queen Footboard  <br /> Queen Poster Rails: 62.28"W x 84.02"D x 18.07"H - 37lbs.';

    $myArray = preg_split('/<br[^>]*>/i', $myString);

    print_r($myArray);
?>

DEMO

<强>限制

将拆分以Array ( [0] => Overall Queen Poster [1] => Queen Poster Headboard: [2] => Queen Poster [3] => Queen Footboard [4] => Queen Poster Rails: 62.28"W x 84.02"D x 18.07"H - 37lbs. ) 开头的所有HTML标记。这意味着,如果您创建了自己的标记,例如br,则会错误地将其视为换行符。

<强>替代

  • <breadcrumb>如果您确定自己的代码始终是explode('<br />', $myString)
  • <br />如果您有preg_split('/<br\s*/?>/i', $myString)等标记,并且在任何<breadcrumb>标记中都没有任何属性。

额外备注

如果您不希望在匹配中使用空格,则可以将正则表达式更改为<br>,这也将匹配匹配后的任何空白字符。或者,您可以使用/<br[^>]*>\s*/i {/ 1}}通过ltrim运行它。

答案 1 :(得分:3)

输入是以html编码的字符串形式提供的,因此换行符编码为<br />,那你为什么不把<br />作为分隔符而不是\n