una quitar parte extraer eliminar dividir caracteres caracter cadena buscar php string

php - quitar - extraer una parte de una cadena en java



Insertar cadena en la posiciĆ³n especificada (11)

¿Hay una función de PHP que puede hacer eso?

Estoy usando strpos para obtener la posición de una subcadena y quiero insertar una string después de esa posición.


¡Extrañas respuestas aquí! Puede insertar cadenas en otras cadenas fácilmente con sprintf [enlace a la documentación]. La función es extremadamente poderosa y puede manejar múltiples elementos y otros tipos de datos también.

$color = ''green''; sprintf(''I like %s apples.'', $color);

te da la cuerda

I like green apples.


Esta fue mi solución simple. También agregue texto a la siguiente línea después de encontrar la palabra clave.

$oldstring = "This is a test/n#FINDME#/nOther text and data."; function insert ($string, $keyword, $body) { return substr_replace($string, PHP_EOL . $body, strpos($string, $keyword) + strlen($keyword), 0); } echo insert($oldstring, "#FINDME#", "Insert this awesome string below findme!!!");

Salida:

This is a test #FINDME# Insert this awesome string below findme!!! Other text and data.


Pruébalo, funcionará para cualquier número de subcadenas.

<?php $string = ''bcadef abcdef''; $substr = ''a''; $attachment = ''+++''; //$position = strpos($string, ''a''); $newstring = str_replace($substr, $substr.$attachment, $string); // bca+++def a+++bcdef ?>


Simple y otra forma de resolver:

function stringInsert($str,$insertstr,$pos) { $count_str=strlen($str); for($i=0;$i<$pos;$i++) { $new_str .= $str[$i]; } $new_str .="$insertstr"; for($i=$pos;$i<$count_str;$i++) { $new_str .= $str[$i]; } return $new_str; }


Solo quería agregar algo: encontré la respuesta de tim cooper muy útil, la usé para hacer un método que acepte un conjunto de posiciones y haga la inserción en todas ellas, así que aquí está:

EDITAR: Parece que mi antigua función asumió que $insertstr era solo 1 carácter y que la matriz estaba ordenada. Esto funciona para la longitud de caracteres arbitrarios.

function stringInsert($str, $pos, $insertstr) { if (!is_array($pos)) { $pos = array($pos); } else { asort($pos); } $insertionLength = strlen($insertstr); $offset = 0; foreach ($pos as $p) { $str = substr($str, 0, $p + $offset) . $insertstr . substr($str, $p + $offset); $offset += $insertionLength; } return $str; }


Tengo una de mis antiguas funciones para eso:

function putinplace($string=NULL, $put=NULL, $position=false) { $d1=$d2=$i=false; $d=array(strlen($string), strlen($put)); if($position > $d[0]) $position=$d[0]; for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i]; for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i]; return $string; } // Explanation $string=''My dog dont love postman''; // string $put="''"; // put '' on position $position=10; // number of characters (position) print_r( putinplace($string, $put, $position) ); //RESULT: My dog don''t love postman

Esta es una pequeña y poderosa función que realiza su trabajo sin fallas.


Utilice la función stringInsert en lugar de la función putinplace. Estaba usando la función posterior para analizar una consulta de mysql. Aunque la salida se veía bien, la consulta resultó en un error que me llevó un tiempo localizarlo. La siguiente es mi versión de la función stringInsert que requiere solo un parámetro.

function stringInsert($str,$insertstr,$pos) { $str = substr($str, 0, $pos) . $insertstr . substr($str, $pos); return $str; }




function insSubstr($str, $sub, $posStart, $posEnd){ return mb_substr($str, 0, $posStart) . $sub . mb_substr($str, $posEnd + 1); }


str_replace($sub_str, $insert_str.$sub_str, $org_str);