php - 替换双引号内的内容,包括双引号

LMS*_*LMS 3 php regex replace

所以我决定尝试制作一个文本突出显示系统.目前,我只是str_replace用来替换一个单词(例如输入字符串$rstr = str_replace("Console", "<c>Console</c>", $str在哪里$str.

困扰我的是如何替换语音标记(")和引号(')内的内容.例如,如果字符串"控制台"变成了Console.WriteLine("Words");,我怎么会替换"Words"<sr>"Words"</sr>(<sr>在外部样式表中定义)?

我有我可以使用正则表达式一个,虽然,但1.我不知道该怎么写正则表达式,和2我不知道如何使用正则表达式str_replace.


我的解决方案:

function hlStr($original)
{
    $rstr = explode('"', $original);
    return $rstr[0].'<sr>"'.$rstr[1].'"</sr>'.$rstr[2];
}
Run Code Online (Sandbox Code Playgroud)

Sco*_* M. 7

根据以下评论,我认为这将是一个更好的资源:http://www.regular-expressions.info/

为了找到"任何可以去的地方"你应该使用正则表达式.这就是他们的目的.对此的正则表达式可能类似于此问题中的答案:

如何将引号分隔的字符串与正则表达式匹配?

然后你会像这样使用函数preg_replace():

$return_value = preg_replace('/"[^"]+"/', 'replacement text', $str)
Run Code Online (Sandbox Code Playgroud)

无论如何离开这里:

用反斜杠逃避内容:

$rstr = str_replace("Console", "Console.WriteLine(\"$variable\");", $str)
Run Code Online (Sandbox Code Playgroud)

如果您在字符串中使用变量,这将非常有用.如果它只是一个直接文本替换,请使用单引号:

$rstr = str_replace("Console", 'Console.WriteLine("Words");', $str)
Run Code Online (Sandbox Code Playgroud)

单引号计算所有内容,但单引号只是一个字符.