$string = "<tag>i dont know what is here</tag>"
$string = str_replace("???", "<tag></tag>", $string);
echo $string; // <tag></tag>
¿Qué código estoy buscando?Simple: ¿Cómo reemplazar "todo entre" con php?
$string = "<tag>i dont know what is here</tag>"
$string = str_replace("???", "<tag></tag>", $string);
echo $string; // <tag></tag>
¿Qué código estoy buscando?Simple: ¿Cómo reemplazar "todo entre" con php?
$search = "/[^<tag>](.*)[^<\/tag>]/";
$replace = "your new inner text";
$string = "<tag>i dont know what is here</tag>";
echo preg_replace($search,$replace,$string);
salidas:
<tag>your new inner text</tag>
Estoy asumiendo que desea reemplazar el contenido de las etiquetas, y no sólo reemplazar la cadena completa . – rlemon
Debería usar lookaround en su lugar, para ser honesto. –
Ejecutando este código como aparece 'Advertencia: preg_replace() [function.preg-replace]: modificador desconocido' t 'en la línea 1' – anthonygore
$string = "<tag>i dont know what is here</tag>"
$string = "<tag></tag>";
echo $string; // <tag></tag>
o simplemente?
$string = str_replace($string, "<tag></tag>", $string);
Lo siento, no pude resistir. Tal vez actualice su pregunta con algunos detalles más. ;)
i dnot sé caliente para poner la pregunta .... – faq
$string = "<tag>i dont know what is here</tag>"
$string = preg_replace('#(<tag.*?>).*?(</tag>)#', '$1$2', $string)
Falta una cadena de reemplazo en el segundo argumento: '$ 1'. 'Nuevo texto'. '$ 2' – gradosevic
una función genérica:
function replace_between($str, $needle_start, $needle_end, $replacement) {
$pos = strpos($str, $needle_start);
$start = $pos === false ? 0 : $pos + strlen($needle_start);
$pos = strpos($str, $needle_end, $start);
$end = $pos === false ? strlen($str) : $pos;
return substr_replace($str, $replacement, $start, $end - $start);
}
mejor que la respuesta aceptada. no es necesario usar un reemplazo de expresiones regulares a menos que lo necesite. – sgroves
si la "etiqueta" cambios:
$string = "<tag>i dont know what is here</tag>";
$string = preg_replace('|^<([a-z]*).*|', '<$1></$1>', $string)
echo $string; // <tag></tag>
Si no sabe qué hay dentro de la etiqueta <tag>
, es posible que haya otra etiqueta <tag>
allí, p. Ej.
<tag>something<tag>something else</tag></tag>
Por lo tanto, una función genérica de reemplazo de cadenas no hará el trabajo.
Una solución más robusta es tratar la cadena como XML y manipularla con DOMDocument
. Es cierto que esto solo funciona si la cadena es válida como XML, pero todavía creo que es una solución mejor que una cadena de reemplazo.
$string = "<tag>i don't know what is here</tag>";
$replacement = "replacement";
$doc = new DOMDocument();
$doc->loadXML($str1);
$node = $doc->getElementsByTagName('tag')->item(0);
$newNode = $doc->createElement("tag", $replacement);
$node->parentNode->replaceChild($newNode, $node);
echo $str1 = $doc->saveHTML($node); //output: <tag>replacement</tag>
lo de la formulación de la pregunta estúpida :)) – faq