如何从 PHP 中的非常大的字符串中获取自定义字符
How to get custom characters from very large string in PHP
我有一串货币 - 货币代码、名称和汇率(第一个汇率是单位每欧元,第二个是每单位欧元)。
string(6429) " USD US Dollar 1,164342 0,858854
EUR Euro1,000000 1,000000 GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477 AUD Australian Dollar 1,549853 0,645222 CAD Canadian Dollar 1,435142 0,696795 SGD Singapore Dollar 1,564234 0,639291 CHF Swiss Franc 1,070921 0,933776 MYR Malaysian Ringgit 4,846357 0,206341 JPY Japanese Yen 132,999525 0,007519 CNY Chinese Yuan Renminbi 7,444264 0,134332 NZD New Zealand Dollar 1,616910 0,618464 THB Thai Baht 38,890927 0,025713 HUF Hungarian Forint 362,270767 0,002760 AED Emirati Dirham 4,276047 0,233861 HKD Hong Kong Dollar 9,052195 0,110470 MXN Mexican Peso 23,485298 0,042580 ZAR South African Rand 16,811235 0,059484 PHP Philippine Peso 59,132446 0,016911
等等...
重要 - 这是 copy/paste 字符串,因此空白计数与示例中的一样,它可以在整数和单词之间随机排列。
字符串在一行中,没有换行符。
所以我的目标是获取货币代码和货币汇率“单位每欧元”(第一个值)
首选输出关联数组。
示例:
$pairs = [
'USD' => 1,164342,
'GBP' => 0,842392,
];
每种货币依此类推。
我无法使用任何 API。
谁能帮我完成这个任务?
更新:一段带有换行符的原始字符串
string(6667) "Valūtas kods Valūtas nosaukums Vienības par EUR EUR par vienību
USD US Dollar 1,164342 0,858854
EUR Euro 1,000000 1,000000
GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477
AUD Australian Dollar 1,549853 0,645222
CAD Canadian Dollar 1,435142 0,696795
SGD Singapore Dollar 1,564234 0,639291
CHF Swiss Franc 1,070921 0,933776
MYR Malaysian Ringgit 4,846357 0,206341
JPY Japanese Yen 132,999525 0,007519
CNY Chinese Yuan
Renminbi 7,444264 0,134332
NZD New Zealand Dollar 1,616910 0,618464
希望这是您需要的。请检查
$string = " USD US Dollar 1,164342 0,858854
EUR Euro1,000000 1,000000 GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477 AUD Australian Dollar 1,549853 0,645222 CAD Canadian Dollar 1,435142 0,696795 SGD Singapore Dollar 1,564234 0,639291 CHF Swiss Franc 1,070921 0,933776 MYR Malaysian Ringgit 4,846357 0,206341 JPY Japanese Yen 132,999525 0,007519 CNY Chinese Yuan Renminbi 7,444264 0,134332 NZD New Zealand Dollar 1,616910 0,618464 THB Thai Baht 38,890927 0,025713 HUF Hungarian Forint 362,270767 0,002760 AED Emirati Dirham 4,276047 0,233861 HKD Hong Kong Dollar 9,052195 0,110470 MXN Mexican Peso 23,485298 0,042580 ZAR South African Rand 16,811235 0,059484 PHP Philippine Peso 59,132446 0,016911 ";
preg_match_all('/(USD|GBP)[^\d]*(\d*,?\d*)/', $string, $output);
if ($output) {
var_dump(array_combine($output[1], $output[2]));
}
如果您需要其他货币,只需更改货币列表,例如只有 usd 和 gbp 将是 USD|GBP 等等
我有一串货币 - 货币代码、名称和汇率(第一个汇率是单位每欧元,第二个是每单位欧元)。
string(6429) " USD US Dollar 1,164342 0,858854
EUR Euro1,000000 1,000000 GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477 AUD Australian Dollar 1,549853 0,645222 CAD Canadian Dollar 1,435142 0,696795 SGD Singapore Dollar 1,564234 0,639291 CHF Swiss Franc 1,070921 0,933776 MYR Malaysian Ringgit 4,846357 0,206341 JPY Japanese Yen 132,999525 0,007519 CNY Chinese Yuan Renminbi 7,444264 0,134332 NZD New Zealand Dollar 1,616910 0,618464 THB Thai Baht 38,890927 0,025713 HUF Hungarian Forint 362,270767 0,002760 AED Emirati Dirham 4,276047 0,233861 HKD Hong Kong Dollar 9,052195 0,110470 MXN Mexican Peso 23,485298 0,042580 ZAR South African Rand 16,811235 0,059484 PHP Philippine Peso 59,132446 0,016911
等等... 重要 - 这是 copy/paste 字符串,因此空白计数与示例中的一样,它可以在整数和单词之间随机排列。 字符串在一行中,没有换行符。
所以我的目标是获取货币代码和货币汇率“单位每欧元”(第一个值)
首选输出关联数组。
示例:
$pairs = [
'USD' => 1,164342,
'GBP' => 0,842392,
];
每种货币依此类推。
我无法使用任何 API。
谁能帮我完成这个任务?
更新:一段带有换行符的原始字符串
string(6667) "Valūtas kods Valūtas nosaukums Vienības par EUR EUR par vienību
USD US Dollar 1,164342 0,858854
EUR Euro 1,000000 1,000000
GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477
AUD Australian Dollar 1,549853 0,645222
CAD Canadian Dollar 1,435142 0,696795
SGD Singapore Dollar 1,564234 0,639291
CHF Swiss Franc 1,070921 0,933776
MYR Malaysian Ringgit 4,846357 0,206341
JPY Japanese Yen 132,999525 0,007519
CNY Chinese Yuan
Renminbi 7,444264 0,134332
NZD New Zealand Dollar 1,616910 0,618464
希望这是您需要的。请检查
$string = " USD US Dollar 1,164342 0,858854
EUR Euro1,000000 1,000000 GBP British Pound 0,842392 1,187096
INR Indian Rupee 87,128927 0,011477 AUD Australian Dollar 1,549853 0,645222 CAD Canadian Dollar 1,435142 0,696795 SGD Singapore Dollar 1,564234 0,639291 CHF Swiss Franc 1,070921 0,933776 MYR Malaysian Ringgit 4,846357 0,206341 JPY Japanese Yen 132,999525 0,007519 CNY Chinese Yuan Renminbi 7,444264 0,134332 NZD New Zealand Dollar 1,616910 0,618464 THB Thai Baht 38,890927 0,025713 HUF Hungarian Forint 362,270767 0,002760 AED Emirati Dirham 4,276047 0,233861 HKD Hong Kong Dollar 9,052195 0,110470 MXN Mexican Peso 23,485298 0,042580 ZAR South African Rand 16,811235 0,059484 PHP Philippine Peso 59,132446 0,016911 ";
preg_match_all('/(USD|GBP)[^\d]*(\d*,?\d*)/', $string, $output);
if ($output) {
var_dump(array_combine($output[1], $output[2]));
}
如果您需要其他货币,只需更改货币列表,例如只有 usd 和 gbp 将是 USD|GBP 等等