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( [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] =>
第二组)