为了账号安全,请及时绑定邮箱和手机立即绑定

获取两个字符串PHP之间的内容

获取两个字符串PHP之间的内容

慕慕森 2019-09-03 16:23:57
什么是获取两个字符串之间内容的最佳方式,例如ob_start();include('externalfile.html'); ## see below$out = ob_get_contents();ob_end_clean();preg_match('/{FINDME}(.|\n*)+{\/FINDME}/',$out,$matches);$match = $matches[0];echo $match;## I have used .|\n* as it needs to check for new lines. Is this correct?## externalfile.html{FINDME}Text Here{/FINDME}出于某种原因,这似乎适用于我的代码中的一个地方而不是另一个地方。我是否以正确的方式解决这个问题?或者,还有更好的方法?输出缓冲区也是这样做的方法还是file_get_contents?
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

使用#而不是/你不必逃避它们。

该修改 s使得.与\s包括换行符。

{并}具有从n到m倍的各种功能{n,m}。

基础的


preg_match('#\\{FINDME\\}(.+)\\{/FINDME\\}#s',$out,$matches);

各种标签的高级等(javascript的样式不是很好)。


$delimiter = '#';

$startTag = '{FINDME}';

$endTag = '{/FINDME}';

$regex = $delimiter . preg_quote($startTag, $delimiter) 

                    . '(.*?)' 

                    . preg_quote($endTag, $delimiter) 

                    . $delimiter 

                    . 's';

preg_match($regex,$out,$matches);

将此代码放在一个函数中


对于任何你不想使用任何流浪的 PHP代码的文件,你应该使用file_get_contents。include / require甚至不应该是一个选项。


查看完整回答
反对 回复 2019-09-03
?
LEATH

TA贡献1936条经验 获得超6个赞

您也可以使用substr和strpos。


$startsAt = strpos($out, "{FINDME}") + strlen("{FINDME}");

$endsAt = strpos($out, "{/FINDME}", $startsAt);

$result = substr($out, $startsAt, $endsAt - $startsAt);

您需要添加错误检查以处理它不是FINDME的情况。


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 1143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信