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

171
Vistas
Php reemplaza la división mach exacta

He intentado reemplazar php pero cambia todo lo que ocurre. Solo quiero mach exacto y dividir | y +

 $menu='home|about|product+service+able|contact|ab|'; echo str_replace("ab","book",$menu);

Resultado:

 $result ='home|about|product+service+abel|contact|book|';

O si ejemplo 2

 $menu2='home|about|product+service+ab|contact|able|';

resultado2

 $result ='home|about|product+service+book|contact|able|';
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Debe usar la expresión regular para capturar 'ab' al principio y al final de la cadena https://www.php.net/manual/ro/function.preg-replace.php vea el código a continuación con algunos casos de prueba

 <?php $menu='home|about|product+service+able|contact|ab|'; $menu1='home|about|product+service+able|contact|ab'; $menu2='ab|about|product+service+able|contact|abx|'; $menu3='home|ab|product+service+able|contact|abx'; $menu4='home|about|product+service+ab|contact|able|'; $pattern = array('/^ab([|+])/', '/([|+])ab([|+])/', '/([|+])ab$/'); $replacement = array('book${1}', '${1}book${2}', '${1}book'); echo preg_replace($pattern, $replacement, $menu); echo "\n"; echo preg_replace($pattern, $replacement, $menu1); echo "\n"; echo preg_replace($pattern, $replacement, $menu2); echo "\n"; echo preg_replace($pattern, $replacement, $menu3); echo "\n"; echo preg_replace($pattern, $replacement, $menu4); echo "\n"; ?>

producción

 home|about|product+service+able|contact|book| home|about|product+service+able|contact|book book|about|product+service+able|contact|abx| home|book|product+service+able|contact|abx home|about|product+service+book|contact|able|
over 4 years ago · Santiago Trujillo Denunciar

0

Como nadie ofreció una solución sin expresiones regulares, aquí está la mía:

 <?php // Some Configuration $searchFor = 'ab'; $replaceWith = 'book'; // Sample data $menu = 'home|about|product+service+able|contact|ab|'; // Actual code $array = explode('|', $menu); $resultArray = []; foreach ($array as $string) { if ($string === $searchFor) { $resultArray[] = $replaceWith; } else { $resultArray[] = $string; } } $result = implode('|', $resultArray); echo $result; // home|about|product+service+able|contact|book|

Podrías hacer algunas optimizaciones, pero para facilitar la comprensión lo dejé como está.

Actualización: si también desea poder dividir entre + , también use lo siguiente.

 <?php function customSplit($var, $searchFor, $replaceWith) { $array = explode('|', $var); $resultArray = []; foreach ($array as $string) { $tmpResult = []; foreach (explode('+', $string) as $tmpString) { if ($tmpString === $searchFor) { $tmpResult[] = $replaceWith; } else { $tmpResult[] = $tmpString; } } $resultArray[] = implode('+', $tmpResult); } return implode('|', $resultArray); } // Some Configuration $searchFor = 'ab'; $replaceWith = 'book'; // Sample data $menu = 'home|about|product+service+able|contact|ab|'; $menu2 = 'home|about|product+service+ab|contact|able|'; echo customSplit($menu, $searchFor, $replaceWith); // home|about|product+service+able|contact|book| echo customSplit($menu2, $searchFor, $replaceWith); // home|about|product+service+book|contact|able|
over 4 years ago · Santiago Trujillo Denunciar

0

Busque cualquier ab que no esté precedido o seguido por un carácter en el rango az .

Por lo tanto, necesita una mirada negativa hacia atrás para az: (?<![az])

y una mirada negativa hacia el futuro para az : (?![az])

con ab en el medio

expresión regular: (?<![az])ab(?![az])

Aquí hay un ejemplo

Y en php:

 $pattern = '/(?<![az])ab(?![az])/'; $result = preg_replace($pattern,'book',$yourstring);
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