删除字符串中某些字符之前和之后的所有内容

时间:2015-07-24 09:12:14

标签: php string

美好的一天,

我想删除字符串中某个字符序列之前和之后的所有内容。

E.g:

$string = 'TESTING<html>This is a string</html>ANOTHER TEST!!';

我希望删除<html>之前和</html>之后的所有内容,以便在将其写入数据库时​​字符串如下所示:

<html>This is a string</html>

重要的是<html></html>保留在字符串中。

有人有个主意吗?

3 个答案:

答案 0 :(得分:5)

可以使用正则表达式完成:

$str = 'TESTING<html>This is a string</html>ANOTHER TEST!!';
preg_match_all('/(<html>.*<\/html>)/', $str, $matches);
print_r($matches[1][0]);

对于多行字符串,您必须添加修饰符“m”:

$str = 'TESTING<html>This is a string</html>ANOTHER TEST!!';
preg_match_all('/(<html>.*<\/html>)/m', $str, $matches);
print_r($matches[1][0]);

答案 1 :(得分:3)

尝试这样的事情:

// vars
$string = ' This is text before <html> and this is the text in between </html> And after there is some more text.. ';
$first = '<html>';
$last = '</html>';
// job
$start = stripos($string, $first); // first occurrence position 
$length = strripos($string, $last); // last occurrence position 
$newString = substr($string, $start, ($length-$start+strlen($last))); 
// output
var_dump($string,$start,$length,$newString);

答案 2 :(得分:0)

除了发布的答案外,您还可以使用strstr()函数获取之前和之后的文字;

$newstring = '<html>' . strstr($string, '<html>');
$newstring = strstr($newstring, '</html>', true) . '</html>';