Php demo

问题描述 投票:0回答:1
Example code

Output

[transactionDetails] => wsTransactionDetail Object
    (
        [sharesAmount] => 
        [sharesNumber] => 
        [amount] => 33450
        [commerceCode] => 1234567890
        [buyOrder] => 123321
    )

[detailOutput] => wsTransactionDetailOutput Object
    (
        [authorizationCode] => 001122
        [paymentTypeCode] => VD
        [responseCode] => 0
        [sharesNumber] => 0
        [amount] => 33450
        [commerceCode] => 1234567890
        [buyOrder] => 123321
    )

我试图用PHP在一个文本文件中找到两个模式。

$pattern1 = preg_quote("authorizationCode", '/');
$pattern2 = preg_quote("amount", '/');

$pattern = "/^.*($pattern1).*\$|($pattern2).*\$/m";

if(preg_match_all($pattern, $contents, $matches)){
   echo "Founds:\n";
   echo implode("\n", $matches[0]);
}

文本文件是这样的。而我的PHP代码是这样的它工作得很好,但我得到的是 [数额] => 33450 两次,因为"

数量"在文本文件中出现了两次。我需要得到"数量"和"授权码"价值

[detailOutput] => wsTransactionDetailOutput Object
    (
        [authorizationCode] => 001122
        [paymentTypeCode] => VD
        [responseCode] => 0
        [sharesNumber] => 0
        [amount] => 33450
        [commerceCode] => 1234567890
        [buyOrder] => 123321
    )

只在这里面

的文本文件。

/^.*($pattern1).*\$|($pattern2).*\$/m

谁能帮帮我?我将感激不尽。我想我的问题出在正则表达式上。

我应该把它修改成只找里面的句子。

[detailOutput] => wsTransactionDetailOutput Object(
php regex pattern-matching text-files
1个回答
0
投票

[detailOutput]我想用PHP在一个文本文件中找到两个模式。文本文件是这样的。[transactionDetails] => wsTransactionDetail Object ( [sharesAmount] => [sharesNumber] =& 。authorizationCode你可以使用2个捕获组。首先匹配

^\h*\[detailOutput] => .*(?:\R(?!\h*\[authorizationCode]).*)*\R\h*(\[authorizationCode] => \d+)(?:\R(?!\h*\[amount]).*)*\R\h*(\[amount] => \d+)

部分,然后是匹配所有非以

  • ^ 并获取授权码和金额的值。
  • \h*\[detailOutput] => .*解释[detailOutput] => 字符串的开始
  • (?:\R(?!\h*\[authorizationCode]).*)* 匹配 [authorizationCode]
  • \R\h* 其后
  • ( 重复匹配所有非以 匹配一个unicode新行序列和0+水平空白字符。
    • \[authorizationCode] => \d+ 捕捉 [authorizationCode] => 第1组
  • ) 匹配
  • (?:\R(?!\h*\[amount]).*)*\R\h* 和1+位数[amount]
  • ( 紧密型集团 匹配所有不以
    • \[amount] => \d+ 捕捉 [amount] => 第二组
  • )

匹配 和1+位数Regex演示

© www.soinside.com 2019 - 2024. All rights reserved.