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

200
Visualizações
Cómo preg_match todos los dígitos y no la url codificado commar

I la siguiente URL https://test.example.com/blah/12345%2C80%2C8263473%2C9475834343 Después de la parte https://test.example.com/blah/ de la URL, hay números separados por %2C . Quiero obtener una matriz de todos los números en la URL. El número puede ser un 1 positivo hasta el infinito positivo. Puede haber una cantidad infinita de números en la URL o nada en absoluto (en este caso, la matriz está vacía).

En este escenario, quiero una matriz como: [12345, 80, 8263473, 9475834343]

 $url = "https://test.example.com/blah/12345%2C80%2C8263473%2C9475834343"; preg_match('/\b\d+\b/', $url, $matches); print_r($matches);

Sin embargo, el único elemento en mi matriz es 12345

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

También puede utilizar el ancla \G para obtener esos números:

 (?:https?://\S+?/blah/|\G(?!^))(?:%2C)?\K\d+

Explicación

  • (?: grupo de no captura
    • https?://\S+?/blah/ coincidir el protocolo y hasta la primera aparición de /blah/
    • | O
    • \G(?!^) Afirmar la posición actual al final del partido anterior, no al principio
  • ) Cerrar grupo de no captura
  • (?:%2C)? Coincide opcionalmente con %2C
  • \K\d+ Olvidar lo que coincide hasta ahora y hacer coincidir 1+ dígitos

Demostración de expresiones regulares | demostración de PHP

Ejemplo

 $re = '`(?:https?://\S+?/blah/|\G(?!^))(?:%2C)?\K\d+`m'; $str = 'https://test.example.com/blah/12345%2C80%2C8263473%2C9475834343'; preg_match_all($re, $str, $matches); print_r($matches[0]);

Producción

 Array ( [0] => 12345 [1] => 80 [2] => 8263473 [3] => 9475834343 )
over 4 years ago · Santiago Trujillo Relatório

0

Considere simplemente dividir en caracteres codificados, para generar una matriz de los números que desea

 $url = "https://test.example.com/blah/12345%2C80%2C8263473%2C9475834343"; $url = preg_replace("/^.*\//", "", $url); $matches = preg_split("/%\w{2}/", $url); print_r($matches);

Esto imprime:

 Array ( [0] => 12345 [1] => 80 [2] => 8263473 [3] => 9475834343 )
over 4 years ago · Santiago Trujillo Relatório

0

No estoy seguro de cómo funcionaría esto con PhP en un entorno de trabajo, pero ¿alguna de las siguientes sería una opción para usted?

 %2C|(?!.*\/)(\d+)

Donde primero haría coincidir la parte "% 2C" y usaría una alternancia para hacer coincidir grupos de dígitos después de su última barra diagonal para tomar esos grupos de dígitos en una matriz. Nuevamente, no estoy seguro de cómo obtendría una matriz de ese primer grupo de captura.

Si algo así falla, tal vez excluya la parte "% 2C" de su matriz final con verbos de control de retroceso (*SKIP)(*F) así:

 %2C(*SKIP)(*F)|(?!.*\/)\d+

Una posible forma alternativa de escribir esto podría ser:

 (?:^.*\/|%2C)(*SKIP)(*F)|\d+
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