在preg_match中使用变量作为模式的一部分不适用于空格字符



>我有一个字符串变量

$input = "Hello everybody [ I want this sub string ]. Hi. How are you?";

以及一个在字符之间获取子字符串的函数

function getSubstring($input, $start, $end)
{
    preg_match("~".$start."(.*?)".$end."~", $input, $output);
    return $output[1];
}

正在得到每个人的输出 [ 我想要这个子字符串]。

echo getSubstring($input, 'H', 'H');

但没有输出

echo getSubstring($input, '[', ']'); 

因为"["和"]"是空格字符

获取两个输出如何修改以下行

preg_match("~".$start."(.*?)".$end."~", $input, $output);

请帮助我。

您需要

使用preg_quote()来转义特殊字符,这些字符是:

. \ + * ?[ ^ ] $ ( ) { } = !<> |: -

$input = "Hello everybody [ I want this sub string ]. Hi. How are you?";
function getSubstring($input, $start, $end)
{
    preg_match("~".preg_quote($start)."(.*?)".preg_quote($end)."~", $input, $output);
    return $output[1];
}
echo getSubstring($input, '[', ']');//I want this sub string 

最新更新