所以我决定尝试制作一个文本突出显示系统.目前,我只是使用str_replace来替换一个单词(例如$rstr = str_replace(“Console”,“< c> Console< / c>”,$str,其中$str是输入字符串).
令我难过的是如何替换语音标记(“)和引号(‘)内的内容.例如,如果字符串”Console“变成Console.WriteLine(”Words“);,我将如何替换”Words“使用< sr>“Words”< / sr>(< sr>在外部样式表中定义)?
我有一个虽然我可以使用正则表达式,但1.我不知道如何编写正则表达式,以及2.我不知道如何使用正则表达式与str_replace.
我的解决方案:
function hlStr($original)
{
$rstr = explode('"', $original);
return $rstr[0].'"'.$rstr[1].'"'.$rstr[2];
}
解决方法:
为了找到“任何可以去的地方”你应该使用正则表达式.这就是他们的目的.对此的正则表达式可能类似于此问题中的答案:
$return_value = preg_replace('/"[^"]+"/', 'replacement text', $str)
无论如何离开这里:
用反斜杠逃避内容:
$rstr = str_replace("Console", "Console.WriteLine(\"$variable\");", $str)
如果您在字符串中使用变量,这将非常有用.如果它只是一个直接文本替换,请使用单引号:
$rstr = str_replace("Console", 'Console.WriteLine("Words");', $str)
单引号计算所有内容,但单引号只是一个字符.
标签:php,regex,replace
来源: https://codeday.me/bug/20190729/1573757.html