我有一个像
这样的字符串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);
但没有得到正确的结果。
答案 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);
?>
<强>限制强>:
将拆分以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
?