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

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

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

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

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