如何使用PHP从XML“Like”字符串的文本和数字中提取变量?

时间:2014-07-29 03:00:19

标签: php string parsing html-parsing

以下是我必须使用的内容:

$sample = '<VAR1>TEXT</VAR1><BR><NUM1>123456789</NUM1><BR><NUM2>9</NUM2><BR><NUM3>99</NUM3>';

以下是我最终想要的结果:

$VAR1 = 'TEXT';
$NUM1 = 123456789;
$NUM2 = 9;
$NUM3 = 99;

提前谢谢你,我确信解决方案很简单,但是我所尝试的所有内容到目前为止都没有用。

1 个答案:

答案 0 :(得分:0)

这真的真的非常糟糕(我会在前面说)但它确实有用......

<?PHP

$a = '<VAR1>TEXT</VAR1><BR><NUM1>123456789</NUM1><BR><NUM2>9</NUM2><BR><NUM3>99</NUM3>';

preg_match_all("(\<.+\>(.+)\<\/.+\>)U",$a, $r);    

    // 4 TESTING //

    echo '$r:<pre>';
    print_r($r); 
    echo '</pre><hr>';

    /*
    $r Array
    (
        [0] => Array
            (
                [0] => <VAR1>TEXT</VAR1>
                [1] => <BR><NUM1>123456789</NUM1>
                [2] => <BR><NUM2>9</NUM2>
                [3] => <BR><NUM3>99</NUM3>
            )

        [1] => Array
            (
                [0] => TEXT
                [1] => <NUM1>123456789
                [2] => <NUM2>9
                [3] => <NUM3>99
            )
    )
    */

$demo = array();

$demo = array_combine ( array('VAR1'), sscanf($a, '<VAR1>%[^<]</VAR1>') );

foreach ($r[1] as $key => $value) {

    if (strpos($value, '<NUM1>') !== false) {
        $clean = str_replace("<NUM1>", "", $value);
        $demo['NUM1'] = trim($clean);
    }elseif (strpos($value, '<NUM2>') !== false) {
        $clean = str_replace("<NUM2>", "", $value);
        $demo['NUM2'] = trim($clean);
    }elseif (strpos($value, '<NUM3>') !== false) {
        $clean = str_replace("<NUM3>", "", $value);
        $demo['NUM3'] = trim($clean);
    }else{

    }//end if   

}//end foreach

    // 4 TESTING //

    echo 'DEMO:<pre>';
    print_r($demo); 
    echo '</pre><hr>';

    /*
    $demo Array
    (
        [VAR1] => TEXT
        [NUM1] => 123456789
        [NUM2] => 9
        [NUM3] => 99
    )*/

?>