> Faqs > Cómo separar una cadena de texto en PHP línea a línea

Cómo separar una cadena de texto en PHP línea a línea

Tengo una cadena de texto que está escrita línea a línea.

En ella tengo correos electrónicos, como esto:

uno@example.com
dos@example.com
tres@example.com

Necesito separar esos correos, escritos en cada línea. Además necesito comprobar los correos para asegurarme que sean válidos. ¿Alguna idea de cómo hacerlo?

Respuestas

Una idea sencilla para separar una cadena de texto línea por línea en PHP es usar la función explode() con el separador de nueva línea "\n". Por ejemplo:

// Una cadena de texto con múltiples líneas
$texto = "uno@example.com
dos@example.com
tres@example.com";

// Separar los emails línea por línea
$lineas = explode("\n", $texto);

// Ahora puedes recorrer los emails si haces un recorrido al array $lineas
foreach ($lineas as $linea) {
    echo "<p>" . $linea . "</p>";
}

?>

Si lo que necesitas es además validar los emails de cada una de las líneas puedes usar la función filter_var con el filtro FILTER_VALIDATE_EMAIL. Lo tendrás que hacer para cada elemento de la línea, por ejemplo:

$texto = "uno@example.com
dos@example.com
no-es-un-email";

$emails = explode("\n", $texto);

// Verificar que cada línea sea un email
foreach ($emails as $email) {
    // quito los posibles espacios antes y después de la cadena, para asegurarme que no falla por eso
    $email = trim($email);
    // compruebo la validez de cada email
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        // email validado correctamente
        echo $email . " es un email válido.<br>";
    } else {
        // la validación de email no ha sido buena
        echo $email . " no es un email válido.<br>";
    }
}

El código anterior validará cada línea y mostrará si es o no un email válido. Con el bucle foreach y el condiciona conseguimos que, para cada línea de la lista de emails, te indique si el formato es de un email válido o no.

Julian
1100 46 84 45
Super gracias!!