La cadena de PHP reemplaza la palabra completa

2 minutos de lectura

La cadena de PHP reemplaza la palabra completa
NVG

Me gustaría reemplazar solo palabras completas usando php

Ejemplo: si tengo

$text = "Hello hellol hello, Helloz";

y yo uso

$newtext = str_replace("Hello",'NEW',$text);

El nuevo texto debería verse como

NUEVO hola1 hola, Helloz

Devoluciones de PHP

NUEVO hola1 hola, NUEVOz

Gracias.

La cadena de PHP reemplaza la palabra completa
Letargo

Quiere usar expresiones regulares. los \b coincide con un límite de palabra.

$text = preg_replace('/\bHello\b/', 'NEW', $text);

Si $text contiene texto UTF-8, deberá agregar el modificador Unicode “u”, para que los caracteres no latinos no se malinterpreten como límites de palabras:

$text = preg_replace('/\bHello\b/u', 'NEW', $text);

  • Esto coincide con madre en suegra 😿

    – Jonny

    15 de marzo de 2019 a las 6:35

  • Una solución para el caso anterior podría estar aquí: stackoverflow.com/a/39685053/129202

    – Jonny

    15 de marzo de 2019 a las 7:22

La cadena de PHP reemplaza la palabra completa
Sandeep Sherpur

palabra múltiple en cadena reemplazada por esto

    $String = 'Team Members are committed to delivering quality service for all buyers and sellers.';
    echo $String;
    echo "<br>";
    $String = preg_replace(array('/\bTeam\b/','/\bfor\b/','/\ball\b/'),array('Our','to','both'),$String);
    echo $String;
    Result: Our Members are committed to delivering quality service to both buyers and sellers.

1646973427 71 La cadena de PHP reemplaza la palabra completa
mario

Formación lista de reemplazo: en caso de que sus cadenas de reemplazo se sustituyan entre sí, necesita preg_replace_callback.

$pairs = ["one"=>"two", "two"=>"three", "three"=>"one"];

$r = preg_replace_callback(
    "/\w+/",                           # only match whole words
    function($m) use ($pairs) {
        if (isset($pairs[$m[0]])) {     # optional: strtolower
            return $pairs[$m[0]];      
        }
        else {
            return $m[0];              # keep unreplaced
        }
    },
    $source
);

Obviamente / por eficiencia /\w+/ podría ser reemplazado por una lista clave /\b(one|two|three)\b/i.

  • tiene un error de sintaxis, reemplace las últimas llaves con paréntesis de preg_replace

    –Muhammad Omer Aslam

    23 de noviembre de 2017 a las 23:23

  • también el if (isset($pairs[$m[0]]) no tiene el paréntesis cosing.

    –Muhammad Omer Aslam

    23 de noviembre de 2017 a las 23:29

  • Gracias. Estaba buscando exactamente esto.

    – Interfaz desconocida

    30 de junio de 2021 a las 21:26

También puedes usar Regx T biblioteca, que cita $ o \ personajes al reemplazar

<?php
$text = pattern('\bHello\b')->replace($text)->all()->with('NEW');

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad