2016-02-02 23 views
1

我對此輸出接收值有問題。如何用PHP剪切字符串中的標記

$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 = ? 

我該怎麼做。對不起,我的英語不好。 謝謝。

+0

另外,我相信你要麼尋找substr或preg_replace –

+0

這是從客戶端收到的價值..建議或示例。 – domTH

回答

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; 

請注意,我說< TRANS>開始和結束標記到您的字符串。

如果數據總是看起來像樣本,這應該工作正常。

+0

我應該想到這一點。我不相信我沒有。 –

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; 
?>