php найти числа в строке после и перед словом «евро» - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть строка типа "9 mesi in cotone EURO 3+ss" или "9 mesi in cotone 3 EURO +ss", и я хотел бы получить целочисленное значение до или после слова EURO, зависит от формата строки (я не знаю, как пользователь отправит ее) Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 11 февраля 2012

Может быть проще разбить его на два регулярных выражения:

/(d+)\s*EURO/
/EURO\s*(d+)/

Это должно установить вас на правильный путь.

0 голосов
/ 11 февраля 2012
preg_match_all('/[0-9]+/',$string,$matches);
$values = array_shift($matches);
$lastnum = array_pop($values);
echo $lastnum;
0 голосов
/ 11 февраля 2012

Примерно так:

if(preg_match('/(\\d+(?:\.\\d+)?)?\\s*euro\\s*(\\d+(?:\.\\d+)?)?/i', $string, $regs) and count($regs) > 1) {
    if(!$regs[1] and !$regs[2]) {
        // Invalid input
    } else {
        $amount = floatval($regs[1] ? $regs[1] : $regs[2]);
        // Do something with $amount
    }
}

Регулярное выражение, возможно, потребуется скорректировать в зависимости от локали (разделители пробелов, запятые и т. Д.).

При работе с целочисленными значениями регулярное выражение упрощается до:

preg_match('/(\\d+)?\\s*euro\\s*(\\d+)?/i', $string, $regs)
...