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

193
Views
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 answers
Answer question

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 Report

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 Report

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