簡體   English   中英

XML 中的正則表達式使用 PHP:找到某個 xml 標記的某個值

[英]Regex in XML using PHP: find certain value of a certain xml tag

我正在嘗試使用正則表達式獲取某個 xml 標記中某個屬性的值,但無法正確處理,也許有人知道該怎么做?

xml 看起來像這樣:

<OTA_PingRQ>
  <Errors>
    <Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">Authentication : login failed</Error>
  </Errors>
</OTA_PingRQ>

並且 id 喜歡只匹配 Error 標簽內的 Shorttext 的值。 最后它應該給我"Authentication refused"

到目前為止,我嘗試的是使用后向和前瞻,這不允許我采用非固定寬度的量詞。 像那樣(?<=<Error.).*?(?=>) 有人能告訴我如何只匹配短文本的值(在錯誤標簽內)嗎?

你沒有指定你正在使用的語言,我可以用 PHP 給你解決方案,反正每種語言的正則表達式都是一樣的。

這是您正在尋找的正則表達式:

#\<Error Code\=\"[0-9]+\" Type\=\"[0-9]+\" Status\=\"NotProcessed\" ShortText\=\"([a-z 0-9]+)\"\>#is

具體 PHP 用途:

$yourOriginalString = '
<OTA_PingRQ>
  <Errors>
    <Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">Authentication : login failed</Error>
  </Errors>
</OTA_PingRQ>' ;

preg_match_all('#\<Error Code\=\"[0-9]+\" Type\=\"[0-9]+\" Status\=\"NotProcessed\" ShortText\=\"([a-z 0-9]+)\"\>#im', $yourOriginalString, $result) ;
print_r($result) ;

正則表達式 function 將返回一個數組:

   [0] => Array
        (
            [0] => <Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">
        )

    [1] => Array
        (
            [0] => Authentication refused
        )

[0] 是完全匹配 [1] 列出匹配捕獲組中的內容:每個 () 在您的正則表達式中設置

一些正則表達式解釋:

Type\=\"[0-9]+\"

假設“類型”可以改變並且是任何數字。

 ShortText\=\"([a-z 0-9]+)\"

捕獲字符串字母數字 + 空格字符串。 如果你需要一些其他的東西,你可以像這樣更新:

*[a-z 0-9\!\-]+*

抓住 ! 和 - 太

#is

是標志和忽略 = 大寫和換行符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM