2016-11-23 3 views
0

Ich habe eine Zeichenfolge, die wie folgt aussieht "<html>". Nun, was ich tun möchte, ist der gesamte Text zwischen der "<" und der ">", und dies sollte für jeden Text gelten, so dass, wenn ich tat, oder "<p>" das würde auch funktionieren. Dann möchte ich diese Zeichenfolge durch eine Zeichenfolge ersetzen, die die Zeichenfolge zwischen den Tags enthält. Zum Beispiel
In:PhP Finden (und ersetzen) Zeichenfolge zwischen zwei verschiedenen Zeichenfolgen

<[STRING]> 

Out:

<this is [STRING]> 

Wo [STRING] die Zeichenfolge zwischen den Tags ist.

+0

http://php.net/manual/en/function.strip-tags.php – Farkie

+1

Ich würde sagen, dass Sie einen Blick auf reguläre Ausdrücke werfen sollten, aber Sie haben bereits markiert. also werde ich stattdessen fragen: und was hast du * bisher versucht? –

+2

[Analysieren Sie HTML mit einem regulären Ausdruck?] (Http://Stackoverflow.com/a/1732454/1641867) - denken Sie nicht, dass das eine gute Idee ist. – ventiseis

Antwort

1

Verwenden Sie eine Erfassungsgruppe, um nach <, die nicht > ist, alles abzugleichen, und ersetzen Sie das in der Ersetzungszeichenfolge.

preg_replace('/<([^>]*)>/, '<this is $1>/, $string); 
0

Ich weiß nicht, ob dies für Sie nützlich sein kann. Sie können einen regulären Ausdruck verwenden, der der beste Weg ist. Sie können aber auch eine kleine Funktion in Betracht ziehen, die zuerst < und zuletzt > Zeichen aus Ihrer Zeichenkette entfernt.

Dies ist meine Lösung:

<?php 

/*Vars to test*/ 

$var1="<HTML>"; 
$var2="<P>"; 
$var3="<ALL YOU WANT>"; 

/*function*/ 

function replace($string_tag) { 
$newString=""; 
for ($i=1; $i<(strlen($string_tag)-1); $i++){ 
    $newString.=$string_tag[$i]; 
} 

return $newString; 

} 

/*Output*/ 

echo (replace($var1)); 
echo "<br>"; 
echo (replace($var2)); 
echo "<br>"; 
echo (replace($var3)); 

?> 

Ausgang gibt Sie mir:
HTML
P
ALL YOU

auf http://phptester.net/

1

hier Getestet willst eine Lösung auf dem Muster zu testen existiert und dann erfasst es, um es schließlich zu ändern ...

<?php 
$str = '<[STRING]>'; 
$pattern = '#<(\[.*\])>#'; 

if(preg_match($pattern, $str, $matches)): 
    var_dump($matches); 
    $str = preg_replace($pattern, '<this is '.$matches[1].'>', $str); 
endif; 

echo $str; 
?> 

echo $ str; Sie können hier testen: http://ideone.com/uVqV0u

Verwandte Themen