如何用PHP剪切字符串中的标记

时间:2016-02-02 03:57:34

标签: php html

我的输出接收值有问题。

  $simple="<TRAN_ID>17564_36428.1354_4159</TRAN_ID>
           <TRAN_DATE>20160201</TRAN_DATE>
           <TRAN_TIME>10:07:08</TRAN_TIME>
           <ERROR_CODE>1</ERROR_CODE>
           <ERROR_DESC>Not Input Policy</ERROR_DESC>
           <POLICY_NBR></POLICY_NBR>";

我想用PHP剪切代码。

    TRAN_ID = ?
    TRAND_DATE = ?
    ERROR_CODE = ?
    ERROR_DESC = ?

我该怎么办?抱歉,我的英语不好。 感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用PHP的SimpleXML库,如下所示:

<?php
    $str ="<TRANS><TRAN_ID>17564_36428.1354_4159</TRAN_ID><TRAN_DATE>20160201</TRAN_DATE><TRAN_TIME>10:07:08</TRAN_TIME><ERROR_CODE>1</ERROR_CODE><ERROR_DESC>Not Input Policy</ERROR_DESC><POLICY_NBR></POLICY_NBR></TRANS>";

    $transaction = simplexml_load_string($str);

    echo $transaction->TRAN_ID.PHP_EOL;
    echo $transaction->TRAN_DATE.PHP_EOL;
    echo $transaction->TRAN_TIME.PHP_EOL;
    echo $transaction->ERROR_CODE.PHP_EOL;
    echo $transaction->ERROR_DESC.PHP_EOL;
    echo $transaction->POLICY_NBR.PHP_EOL;

请注意,我在字符串中添加了&lt; TRANS&gt; 开始和结束标记。

如果数据总是看起来像样本,这应该可行。

答案 1 :(得分:1)

<?php
function getTextBetweenTags($string, $tagname) {
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
}

$str = '<textformat leading="2"><p align="left"><font size="10">get me</font></p></textformat>';
$txt = getTextBetweenTags($str, "font");
echo $txt;
?>