Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
Regex para correo electrónico que muestra la primera y la última letra del usuario y el dominio

Soy nuevo en expresiones regulares y estoy tratando de sustituir algunos caracteres por asterisco en php como se muestra a continuación:

correo electrónico: victor@gmail.com -> v****r@g***l.com

He hecho esto:

 $email = preg_replace('/(?:^|@).\K|\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $linha['cli_email']);

El problema es que la salida es v*****@g****.com en lugar de v****r@g***l.com y no sé cómo mostrar el último para el nombre de usuario y último para el proveedor de correo electrónico.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puedes probar esto:

 $email = preg_replace('/(?:^|.@).\K|.\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $linha['cli_email']);

Espero haber ayudado..

about 4 years ago · Santiago Trujillo Report

0

Aquí, en primer lugar, estamos haciendo coincidir la cadena usando expresiones regulares.

Regex: (?<=\b[az])[a-zA-Z0-9]+(?=.\@)|(?<=@.)[a-zA-Z0-9]+(?=.\.)

(?<=\b[az])[a-zA-Z0-9]+(?=.\@) dice que los caracteres de coincidencia son positivos mirando hacia adelante para one character y @ y positivos mirando hacia atrás para boundary condition y a character .

(?<=@.)[a-zA-Z0-9]+(?=.\.) dice que los caracteres de coincidencia son positivos mirando hacia adelante para one character y . y positivo mirando hacia atrás para la condición @ y un carácter .

Pruebe este fragmento de código aquí

 <?php ini_set('display_errors', 1); $email="victor@gmail.com"; preg_match_all('/(?<=\b[az])[az]+(?=.\@)|(?<=@.)[az]+(?=.\.)/',$email,$matches); foreach($matches[0] as $key => $value) { $email=str_replace($value, getStars(strlen($value)), $email); } echo $email; function getStars($length) { $string=""; for($x=0;$x<$length;$x++) { $string.="*"; } return $string; }
about 4 years ago · Santiago Trujillo Report

0

Debe tener en cuenta todos los tipos de direcciones de correo electrónico. ¿Cómo manejará la respuesta aceptada las direcciones de correo electrónico como m@example.com o user@host.example.com o joe@m.com ?

 <?php function starmid($str) { switch (strlen($str)) { case 0: return false; case 1: return $str; case 2: return $str[0] . "*"; default: return $str[0] . str_repeat("*", strlen($str) - 2) . substr($str, -1); } } function hideemail($email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return false; } list($u, $d) = explode("@", $email); $d = explode(".", $d); $tld = array_pop($d); $d = implode(".", $d); return starmid($u) . "@" . starmid($d) . ".$tld"; } $emails = [ "victor@gmail.com", "v@example.com", "victor@g.com", "victor@host.example.com", "victor+foo@gmail.com", "invalid@", ]; foreach ($emails as $email) { echo hideemail($email) . "\n"; }
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!