美好的一天,
我想删除字符串中某个字符序列之前和之后的所有内容。
E.g:
$string = 'TESTING<html>This is a string</html>ANOTHER TEST!!';
我希望删除<html>
之前和</html>
之后的所有内容,以便在将其写入数据库时字符串如下所示:
<html>This is a string</html>
重要的是<html>
和</html>
保留在字符串中。
有人有个主意吗?
答案 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>';