尝试使用explode使用<br/>标签过滤字符串,不起作用

时间:2011-11-19 07:31:50

标签: php html string explode

我得到一个看起来像这样的字符串

<br>
ACCEPT:YES
<br>
SMMD:tv240245ce
<br>

包含在变量$ _session ['result']

我正在尝试解析这个字符串并在数组中获取以下内容或作为单独的变量

  1. ACCEPT:YES
  2. tv240245ce
  3. 我第一次尝试

    使用
    作为分隔符来爆炸字符串,但这不起作用

    然后我已经尝试了

    $yes = explode(":", strip_tags($_SESSION['result']));
    echo print_r($yes);
    

    给了我一个像这样的数组

    Array ( [0] => ACCEPT [1] => YESSEED [2] => tv240245ce ) 1 
    

    这给了我一个答案。

    请尝试实现我想要达到的目标的好方法是什么?

    有没有办法摆脱第一个和最后一个?
    然后使用剩下的一个作为分隔符来爆炸字符串?

    或者最好的方法是什么?

3 个答案:

答案 0 :(得分:2)

这样做:

$data=preg_split('/\s?<br>\s?/', str_replace('SMMD:','',$data), NULL, PREG_SPLIT_NO_EMPTY);

见这里的例子: CodePad

答案 1 :(得分:2)

您还可以跳过关注虚假<br>的问题,并将整个字符串视为key:value格式,并使用简单的正则表达式:

 preg_match_all('/^(\w+):(.*)/', $text, $result, PREG_SET_ORDER);

这要求你确实在其中有换行符。给你一个$result列表,之后很容易转换成关联数组:

[0] => Array
    (
        [0] => ACCEPT:YES
        [1] => ACCEPT
        [2] => YES
    )

[1] => Array
    (
        [0] => SMMD:tv240245ce
        [1] => SMMD
        [2] => tv240245ce
    )

答案 2 :(得分:0)

首先,执行str_replace删除“SMMD:”的所有实例。然后,爆炸“&lt; b r&gt; \ n”。很抱歉奇怪的间隔,它编码换行符。 包括新行字符,你应该得到你想要的数组:

 $mystr = str_replace( 'SMMD:', '', $mystr );
 $res_array = explode( "<br>\n", $mystr );