正则表达式用PHP中的开始和结束文本查找和替换字符串

时间:2012-02-22 05:29:58

标签: php

我想要一个php函数可能是正则表达式来查找和替换以常量字符串开头的字符串,并以特定字符串和这些字符串中提到的文本结束...例如,

[Starting String]..anything.. [Ending String]

我想删除上面带有空格的字符串模式..请建议!!

3 个答案:

答案 0 :(得分:9)

$str = preg_replace('/' . preg_quote('[Starting String]') . 
                          '.*?' .
                          preg_quote('[Ending String]') . '/', '', $str);

preg_quote用于确保您不会在“开始”和“结束”字符串中使用某些特定的正则表达式字符来破坏正则表达式,例如[]

对于$str = ' blah blah [Starting String] something [Ending String] blah blah';,结果将为blah blah blah blah

答案 1 :(得分:1)

我相信你想使用preg_replace。我还没有对它进行过测试,但有些内容如下:

$str = "Starting String foo bar Ending String"
$pattern = '/^Starting String(.+)Ending String$/'
$replacement = ''
$result = preg_replace($pattern, $replacement, $str);

您必须确保Starting String和Ending String不包含任何特殊的正则表达式字符或者它们被正确转义。

答案 2 :(得分:0)

define('STARTING', 'starting string');

$ending = 'ending string';
$string = 'starting stringSomething Hereending string';

function get_anything($string, $ending, &$anything)
{
    if (strpos($string, STARTING) !== 0)
    {
        return false;
    }
    if (substr($string, strlen($ending) * -1) != $ending)
    {
        return false;
    }
    $anything = substr($string, strlen(STARTING));
    $anything = substr_replace($anything, '', strlen($ending) * -1, -1);
    return true;
}

if (get_anything($string, $ending, $anything))
{
    echo $anything;
}

如果找不到模式,则函数get_anything将返回false,如果找到,则true将返回{{1}}。中间的“任何东西”将在第三个参数中返回。