dpesnyak
@dpesnyak

Поможете заменить регулярное выражение (php)?

Есть отрывок кода, в котором регулярное выражение определяет номер Рayeer кошелька формата Р1234567 или Р1234567890:
} elseif($typ == 'payeer'){
$x = mb_strtoupper($x,'UTF-8');
$mask = '/^P[0-9]{7,10}$/u';

Помогите заменить ее на регулярное выражение номера телефона. ^(\s*)?(\+)?([- _():=+]?\d[- _():=+]?){10,14}(\s*)?$ не работает. Если кому нужно, вот код всей функции:
public function procVar($x,$pr,$okr,$per,$typ){
$x = trim($x);
if(empty($x)){return false;} else {
$x = strip_tags($x);
$x = str_replace("\\", "", $x);

if($pr == 0){
$x = str_replace(" ", "", $x);
} elseif($pr == 1){
while(mb_strpos($x,"  ",0,"UTF-8") !== false){
$x = str_replace("  ", " ", $x);
}}

if($okr == 1){
$x = intval($x);
$x = abs($x);
}

if($per == 1){
while(mb_strpos($x,"\r\n\r\n\r\n",0,"UTF-8") !== false){
$x = str_replace("\r\n\r\n\r\n", "\r\n\r\n", $x);
}}

if($typ == 'no'){
$x = addslashes($x);
return $x;
} else {

if($typ == 'md5'){
$x = mb_strtolower($x,'UTF-8');
$mask = '/^[a-z0-9]{32}$/ui';
} elseif($typ == 'payeer'){
$x = mb_strtoupper($x,'UTF-8');
$mask = '/^P[0-9]{7,10}$/u';
} elseif($typ == 'ip'){
$mask = '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/ui';
} elseif($typ == 'country'){
$x = mb_strtoupper($x,'UTF-8');
$mask = '/^[A-Z]{2}$/u';
}


if(preg_match($mask, $x)){
$x = addslashes($x);
return $x;
} else {
return false;
}
}}}
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
Xakki
@Xakki
PHP-backendчик
elseif ($typ = 'phone') {
    $x = preg_replace('/\D+/u', '', $x);
    $mask = '/^\d{10,14}$/u';
}

Тебе же нужны только цыфры! Уточни минимальную и максимальную длину цифр в телефонах (думается минимум 11)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы