我想要一个php函数可能是正则表达式来查找和替换以常量字符串开头的字符串,并以特定字符串和这些字符串中提到的文本结束...例如,
[Starting String]..anything.. [Ending String]
我想删除上面带有空格的字符串模式..请建议!!
答案 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}}。中间的“任何东西”将在第三个参数中返回。