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

141
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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