Regex在PHP中查找字符串并将其替换为起始和结束文本


Regex to find and replace string with starting and ending text in PHP

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

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

我想删除上面的带空格的字符串模式。。请告知!!

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

preg_quote用于确保您不会在"Starting"answers"Ending"字符串中使用某些特定于正则表达式的字符破坏正则表达式,如[]

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

我相信您想要使用preg_replace。我还没有测试过,但大致如下:

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

您必须确保起始字符串和结束字符串不包含任何特殊的regex字符,或者它们已正确转义。

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。中间的"anything"将在第三个参数中返回。