2016-11-23 2 views
0

У меня есть строка, которая выглядит так: "<html>". Теперь, что я хочу сделать, получается весь текст между "<" и ">", и это должно применяться к любому тексту, так что если бы я сделал "<hello>", или "<p>", который также будет работать. Затем я хочу заменить эту строку строкой, содержащей строку между тегами. Например
В:PhP Найти (и заменить) строку между двумя разными строками

<[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

Я не знаю, может ли это быть полезным для вас. Вы можете использовать регулярное выражение , то есть лучший способ. Но вы также можете рассмотреть небольшую функцию, которая сначала удаляет < и последний > char из вашей строки.

Это мое решение:

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

Смежные вопросы