
Subo aqu铆 estas funciones que nos pueden sacar de alg煤n problemilla cuando tienes que reemplazar la primera ocurrencia de una cadena de texto.
Estar铆a muy 煤til que str_replace se le pudiese pasar por par谩metro el n煤mero de coincidencias que quieres reemplazar, pero no , desgraciadamente solo se puede reemplazar todo o nada utilizando esta funci贸n.
La primera soluci贸n que encuentro es utilizar preg_replace , en esta funci贸n si que le puedes pasar la ocurrencia que quieres sustituir, en este caso reemplazamos solo la primera, ser铆a as铆:
preg_replace($from, $to, $subject, 1);
Si lo quieres meter y llamar desde dentro de una funci贸n puedes hacerlo as铆:
function str_replace_first($from, $to, $subject) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $subject, 1); } |
Esta soluci贸n est谩 guay, pero utiliza expresiones regex, si lo que quieres encontrar es una expresi贸n simple entonces esta perfecto, metes tu texto dentro de barras laterales 芦/禄 y listo.
Ahora bien, si lo que quieres usar como string es una cadena con caracteres y alguno de estos caracteres es un caracter especial ya te obliga a conocer regex, ya que puede que no encuentres tu texto o que reemplaces otros textos que no tienen nada que ver, por ejemplo si buscas textos de este tipo 芦{*texto禄 .
Para lograr buscar cualquier cadena de texto sin tener que utilizar una expresi贸n regex, utilizaremos la siguiente funci贸n:
$pos = strpos($haystack,$needle); if ($pos !== false) { $newstring = substr_replace($haystack,$replace,$pos,strlen($needle)); } |
Si lo quieres meter y llamar desde dentro de una funci贸n puedes hacerlo as铆:
function str_replace_first($search, $replace, $subject) { $pos = strpos($subject, $search); if ($pos !== false) { return substr_replace($subject, $replace, $pos, strlen($search)); } return $subject; } |
Y listo, con esto tenemos dos maneras para poder reemplazar la primera ocurrencia de una cadena, espero que te valga!