У меня есть следующий код
<?php $str="$str="115(JOHN DOE.) 900,000.00 SALARY. 45 AGE. "; $str=preg_replace("/[a-zA-Z(),]/", "", $str); echo $str=preg_replace('!\s+!', ',', $str); ?>
Этот выход
115,.,900000.00.,45.,
но это не совсем то, что мне нужно, мне нужно рассмотреть период, который находится в 900 000,00, и игнорировать то, что ДЖОН ДЕ. , SALARY., ВОЗРАСТ.
Как я могу это сделать?
115,900000.00,45
Т.е. мне нужно регулярное выражение для рассмотрения периодов после числового символа
Не пытаясь улучшить код … это должно сделать это:
$str="115(JOHN DOE.) 900,000.00(SALARY.) 45(AGE.)"; $str=preg_replace("/[a-zA-Z]+\.+/", "", $str); $str=preg_replace("/[a-zA-Z(),]/", "", $str); echo $str=preg_replace('!\s+!', ',', $str);
Я сделал это в три этапа:
$a = "115(JOHN DOE.) 900,000.00(SALARY.)"; $a = preg_replace("/\([AZ ]*\.\)/", "", $a); // 115 900,000.00 $b = preg_replace("/,/", "", $a); // 115 900000.00 $c = preg_replace("/\s+/", ",", $b); // 115,900000.00
Вы можете изменить эту строку:
$a = preg_replace("/\([AZ ]*\.\)/", "", $a);
с этим:
$a = preg_replace("/[AZ ]*\./", "", $a);
для удаления данных без круглых скобок.
$str = '115(JOHN DOE.) 900,000.00 SALARY. 45 AGE. '; preg_match_all("/\d+(?:(?:[,.]\d+)+)?/", $str, $match); $match = array_map(function($val) { return str_replace(",", "", $val); }, $match[0]); echo implode(",", $match);
Выход :
115,900000.00,45