2016-11-23 10 views
0

文字列があります。文字列は"<html>"です。今私がやりたいことは、"<"">"の間のすべてのテキストを取得することです。これは任意のテキストに適用する必要があります。"<hello>"、または"<p>"も機能します。次に、この文字列を、タグ間の文字列を含む文字列に置き換えます。PhP 2つの異なる文字列の間の文字列を検索して置き換えます。

<[STRING]> 

アウト:例
について

[文字列]は、タグの間の文字列である
<this is [STRING]> 

+0

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

+1

正規表現を見てくださいが、すでにタグ付けしておく必要があります。代わりに私は尋ねるつもりです:あなたは*これまでに試したことがありますか? –

+2

[htmlを正規表現で解析していますか?](http://stackoverflow.com/a/1732454/1641867) - それは良い考えではないと思います。 – ventiseis

答えて

1

<以外のものすべてが>でないものと一致するようにキャプチャグループを使用して、その文字列を置換文字列に置き換えます。

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

これはあなたに役立つかどうかわかりません。 正規表現が最良の方法を使用できます。しかし、文字列から最初に<と最後に>文字を削除する少しの機能を検討することもできます。

これは私のソリューションです:

<?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)); 

?> 

出力は私を与える:
HTML
P
あなたがここにhttp://phptester.net/

1

でテスト

を望むすべてのパターンでテストするためのソリューションですそれが最終的にそれを変更するためにそれをキャプチャします...

<?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; ここでテストすることができます:http://ideone.com/uVqV0u

関連する問題