Reputation: 87
The input is:
arrCur['AZN'] = 1;
arrCur['AZN'] = 1;
arrCur['USD'] = 1.545;
arrCur['USD'] = 1.57;
arrCur['EUR'] = 1.72;
arrCur['EUR'] = 1.745;
arrCur['GBP'] = 2.02;
arrCur['GBP'] = 2.1753;
arrCur['RUR'] = 0.02381;
arrCur['RUR'] = 0.025;
arrCur['TRY'] = 0.5095;
arrCur['TRY'] = 0.5519;
I want to get currency codes and rates. My code is:
if(preg_match_all('/arrCur[\'(.*?)\'] \= (.*?)\;/mis', $get, $arrcur))
{
print_r($arrcur);
die;
}
But it don't worked. Where is my mistake?
Upvotes: 0
Views: 25
Reputation: 60153
You need to escape the square brackets, since they have special meaning in a regular expression.
You're also needlessly escaping =
and ;
, so you can remove those backslashes. And if you use double quotes, you can avoid escaping the single quotes in the expression. Here's a fixed version:
$get = <<<END
arrCur['AZN'] = 1;
arrCur['AZN'] = 1;
arrCur['USD'] = 1.545;
arrCur['USD'] = 1.57;
arrCur['EUR'] = 1.72;
arrCur['EUR'] = 1.745;
arrCur['GBP'] = 2.02;
arrCur['GBP'] = 2.1753;
arrCur['RUR'] = 0.02381;
arrCur['RUR'] = 0.025;
arrCur['TRY'] = 0.5095;
arrCur['TRY'] = 0.5519;
END;
$arrcur = [];
if(preg_match_all("/arrCur\['(.*?)'\] = (.*?);/mis", $get, $arrcur))
{
print_r($arrcur);
die;
}
Output:
Array
(
[0] => Array
(
[0] => arrCur['AZN'] = 1;
[1] => arrCur['AZN'] = 1;
[2] => arrCur['USD'] = 1.545;
[3] => arrCur['USD'] = 1.57;
[4] => arrCur['EUR'] = 1.72;
[5] => arrCur['EUR'] = 1.745;
[6] => arrCur['GBP'] = 2.02;
[7] => arrCur['GBP'] = 2.1753;
[8] => arrCur['RUR'] = 0.02381;
[9] => arrCur['RUR'] = 0.025;
[10] => arrCur['TRY'] = 0.5095;
[11] => arrCur['TRY'] = 0.5519;
)
[1] => Array
(
[0] => AZN
[1] => AZN
[2] => USD
[3] => USD
[4] => EUR
[5] => EUR
[6] => GBP
[7] => GBP
[8] => RUR
[9] => RUR
[10] => TRY
[11] => TRY
)
[2] => Array
(
[0] => 1
[1] => 1
[2] => 1.545
[3] => 1.57
[4] => 1.72
[5] => 1.745
[6] => 2.02
[7] => 2.1753
[8] => 0.02381
[9] => 0.025
[10] => 0.5095
[11] => 0.5519
)
)
Upvotes: 2
Reputation: 87
Gotcha!
if(preg_match_all('/arrCur\[\'(.*?)\'\] \= (.*?)\;/mis', $get, $arrcur))
{
print_r($arrcur);
die;
}
Upvotes: 0