Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro preg_match

Olá, meu codigo está dando o seguinte erro: PHP Fatal error: Uncaught TypeError: preg_match(): Argument #2 ($subject) must be of type string, array given in C:\Users\devsf\OneDrive\Área de Trabalho\ESTUDOS\BACKEND\PHP\primeiros-passos\Strings\regex.php:6 Stack trace: #0 C:\Users\devsf\OneDrive\Área de Trabalho\ESTUDOS\BACKEND\PHP\primeiros-passos\Strings\regex.php(6): preg_match() #1 {main}

para o seguinte codigo fonte:

<?php
$telefone = ['(11) 97669 - 0766', '(11) 99002 - 4592', '(11) 97417 - 8895'];


foreach ($telefone as $item) {
    $telefoneValido = preg_match('/\([0-9]{2}\) 9?[0-9]{4} - [0-9]{4}/', $telefone);

    if($telefoneValido){
        echo 'Telefone valido';
    }else{
        echo "Telefone invalido";
    }
}

Eu não entendi o porquê :(

1 resposta
solução!

Olá, Mayara!

O erro que você está recebendo ocorre porque você está passando o array $telefone como argumento para a função preg_match(), mas o segundo parâmetro dessa função deve ser uma string, não um array.

Para corrigir esse erro, você precisa passar o item atual do loop foreach como o segundo parâmetro da função preg_match(). Ou seja, você deve substituir $telefone por $item na linha 6 do seu código.

$telefoneValido = preg_match('/\([0-9]{2}\) 9?[0-9]{4} - [0-9]{4}/', $item);

Dessa forma, a função preg_match() irá verificar se o telefone atual é válido ou não.

Espero ter ajudado e bons estudos!