使用开始和结束搜索php文件中的字符串

Son*_*ngo 2 php regex search

我在写一个php函数来搜索php文件中的某个文本时遇到了问题.我对正则表达式不太满意所以我认为这就是问题所在.

我需要正则表达式有一个起始单词和结束单词,并且应该返回中间找到的文本.这是我试过的:

$handle1 = fopen($file, "r");
$fileContents = fread($handle1,filesize($file));
if (preg_match('/'.$start. '((.|\n)*)'. $end.'/', $fileContents, $match)) {
$text=preg_split('/'.$start.'((.|\n)*)'. $end.'/', $match[0]);
echo $text. " found in $file<br/>";
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Yos*_*shi 8

<?php
$str = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. ...';

$start = 'sadipscing';
$end = 'dolore';

$pattern = sprintf(
    '/%s(.+?)%s/ims',
    preg_quote($start, '/'), preg_quote($end, '/')
);

if (preg_match($pattern, $str, $matches)) {
    list(, $match) = $matches;
    echo $match;
}
Run Code Online (Sandbox Code Playgroud)

$str应该是你的文件的内容.

看一看:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.phpi,ms修饰.


Ash*_*nko 6

你不需要正则表达式.

function getText($string, $start, $end)
{
   $text = "";
   $posStart = strrpos($string, $start);
   $posEnd = strrpos($string, $end, $posStart);
   if($posStart > 0 && $posEnd > 0)
   {
       $text = substr($string, $posStart, strlen($string) - $posEnd));
   }
   return $text;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.