一尘不染

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

php

什么是获取两个字符串之间内容的最佳方法,例如

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?

提前致谢!


阅读 410

收藏
2020-05-26

共1个答案

一尘不染

  • 使用#代替,/这样您就不必逃避它们。
  • 该修改 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。包含/要求甚至不应该是一个选项。
2020-05-26