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

175
Vistas
PHP reemplaza patrones en cadena con URL

Tengo unos cientos de archivos html que quiero mostrar en un sitio web. Todos ellos tienen enlaces en ellos en el siguiente formato:

 [My Test URL|https://www.mywebsite.com/test?param=123]

El problema es que algunas URL están divididas, así que:

 [My Test URL|https://www.mywebsite.c om/test?param=123]

Quiero reemplazar todos aquellos con la contraparte HTML, así que:

 <a href="https://www.mywebsite.com/test?param=123">My Test URL</a>

Sé que con la expresión regular "/[(.*?)]/" puedo hacer coincidir los corchetes, pero ¿cómo puedo dividir por la tubería, eliminar los espacios en blanco en la URL y convertir todo en una cadena?

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

0

Si solo desea eliminar los espacios (en blanco) en la parte de la URL en estos enlaces de descuento, puede usar un mero preg_replace como

 preg_replace('~(?:\G(?!\A)|\[[^][|]*\|)[^][\s]*\K\s+(?=[^][]*])~', '', $text)

Vea la demostración de expresiones regulares . Detalles :

  • (?:\G(?!\A)|\[[^][|]*\|) - final de la coincidencia anterior o [ , luego cero o más caracteres que no sean [ , ] y | y luego un | carbonizarse
  • [^][\s]* - cero o más caracteres que no sean [ , ] y espacios en blanco
  • \K - descartar todo el texto coincidente hasta el momento
  • \s+ - uno o más espacios en blanco
  • (?=[^][]*]) : debe haber cero o más caracteres que no sean [ y ] y luego un ] inmediatamente a la derecha de la ubicación actual.

Si desea eliminar espacios dentro de la parte de la URL y convertir la reducción a HTML, es mejor que use preg_replace_callback :

 $text = '[My Test URL|https://ww w.mywebsite.c om/t est?param=123]'; echo preg_replace_callback('/\[([^][|]*)\|([^][]+)]/', function($m) { return '<a href="' . str_replace(' ', '', $m[2]) . '">' . $m[1] . '</a>'; }, $text);

Vea la demostración de PHP . Detalles :

  • \[ - un [ carácter
  • ([^][|]*) - Grupo 1: cualquier cero o más caracteres distintos de [ , ] y |
  • \| - un | carbonizarse
  • ([^][]+) - Grupo 2: uno o más caracteres distintos de ] y [
  • ] - un ] carácter.
over 4 years ago · Santiago Trujillo Denunciar

0

Si desea eliminar todos los WHITESPACES de una cadena en php , todo lo que necesita hacer es:

$string = str_replace(' ', '', $string);

Donde $string es su cadena con la url .

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que esto lo hará por ti

 $html = "[My Test URL|https://www.mywebsite.c om/test?param=123] [My Test URL|https://www.mywebsite.com/test?param=123]"; $html = preg_replace_callback("|\[.*?\|.*?\]|", function($matches){ list($anchor, $link) = explode("|",substr($matches[0], 1, -1)); return "<a href='".str_replace(' ', '', $link)."'>$anchor</a>"; }, $html); echo $html; // echos <a href="https://www.mywebsite.com/test?param=123">My Test URL</a> <a href="https://www.mywebsite.com/test?param=123">My Test URL</a>
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