Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

249
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda