php 替换指定字符串中,两个字符串之间(包括这两个字符串)之间的内容

如:
1<TABLE border=0 cellSpacing=1 cellPadding=5 width=735 bgColor=#006666
2...
3...
4....
5</TD></TR></TBODY></TABLE>
把一个页面中,以1行开始,5行结束,这样的内容(1-5行)替换为空,请高手指点.

这类替换最好不好使用正则表达式,因为你搜索的内容的唯一的无需使用正在,而且替换的文本较大正则效率太低。

方法是找到这两个特殊字符串的位置,然后使用substr删除中间部分,例子代码:

$str='....你要处理的字符串.....';
$s1='...开始字符串...';
$s2='...结束字符串...';
$i1=strpos($str,$s1);//开始位置
$i2=strpos($str,$s2);//结束位置
if ($i1!==false && $i2!==false)//找到
$str=substr($str,0,$i1-1) . substr($str,$i2+strlen($s2));追问

牛!思路非常棒,我先试试。

追答

这类代码写的次数有点多而已,不算牛,如果个别语句有错,你按照手册调整一下。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-28
假设你需要读取的文本块变量名为$x1

$xx=explode("\n",$x1);

这样,$xx(0)~$xx(4)都是你要去除的内容,剩下的自然就是你要留下的,可否?追问

文本内容太多,这个办法对于小内容还可以,这个办法不太好,谢谢。因为文本内容也是开头和结尾知道,中间部分不固定。所以这个办法不行。
还是要谢谢。

追答

你如果是要截取某块内容,可以利用正则做个函数来统一处理

function gettag($stag,$etag,$block)
{
preg_match_all("'".$stag.".*".$etag."'Usi", $block, $matches);
return $matches[0][0];
}

$stag是起始标签,$etag是结束标签,$block是需要处理的文本块
如gettag("",$block)这样使用即可。

相似回答