Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
¿Cómo hacer que las últimas cadenas comiencen con '@' y números en PHP?

Necesito extraer todas las "palabras" separadas por espacios en blanco al final de la cadena que comienzan con el carácter @ o que consisten únicamente en dígitos.

Por ejemplo, tengo esta cadena:

 hello @tag1 111 world @tag2 @tag3 222 333

necesito obtener

 @tag2 @tag3 222 333

He usado este código a continuación:

 preg_match_all('~\B@\S+|\b\d+\b~', $string, $match);

Con esto, obtendré todas las cadenas que comenzaron con el carácter y los números '@', incluso @tag1 y 111 .

También probé el siguiente código:

 $str = 'hello @tag1 111 world @tag2 @tag3 222 333'; $exp = explode(' ', $str); $arraysfordelete = []; foreach ($exp as $num => $user) { if (!preg_match('~\B@\S+|\b\d+\b~', $user, $match)) { array_push($arraysfordelete, $num); } } $array = array_slice($exp, end($arraysfordelete) + 1); echo implode(' ', $array);

¿Alguna sugerencia?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Aquí está la solución PHP que necesita:

 $str = 'hello @tag1 111 world @tag2 @tag3 222 333'; if (preg_match('~(?<!\S)(@\S+|\d+)(?:\s+(?1))*(?=\s*$)~', $str, $m)) { echo $m[0]; } // => @tag2 @tag3 222 333

Vea la demostración de expresiones regulares . Detalles :

  • (?<!\S) - una ubicación que está justo después de un espacio en blanco o al comienzo de una cadena
  • (@\S+|\d+) - Grupo 1: @ y uno o más caracteres sin espacios en blanco o uno o más dígitos
  • (?:\s+(?1))* - cero o más ocurrencias de uno o más espacios en blanco y luego el patrón del Grupo 1
  • (?=\s*$) - inmediatamente a la derecha, debe haber cero o más espacios en blanco y el final de la cadena.
over 4 years ago · Santiago Trujillo Denunciar

0

Podrías usar, por ejemplo

 ~[@\d]\S+~

lo que significa hacer coincidir una @ o un dígito, seguido de uno o más caracteres que no sean espacios \S+ .

O

 ~(?<!\S)[@\d]\S+~

si desea asegurarse de que no haya ningún carácter que no sea un espacio antes de la @ o el dígito.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda