PhP在两个不同的字符串之间查找(和替换)字符串

时间:2016-11-23 19:17:59

标签: php regex string replace

我有一个字符串,看起来像"<html>"。现在我要做的是获取"<"">"之间的所有文字,这应该适用于任何文字,这样如果我做"<hello>"或{{1}那也行。然后我想用一个包含标签之间字符串的字符串替换此字符串。 例如
在:

"<p>"

输出:

<[STRING]>

其中[STRING]是标签之间的字符串。

3 个答案:

答案 0 :(得分:1)

使用捕获组匹配<之后>之后的所有内容,并将其替换为替换字符串。

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

答案 1 :(得分: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

答案 2 :(得分: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 "\r\n";
echo (replace($var2));
echo "\r\n";
echo (replace($var3));

?>

输出给我:
HTML
P
所有你想要的
https://ideone.com/2RnbnY

上进行测试