4

所以我决定尝试制作一个文本突出显示系统。目前,我只是str_replace用来替换一个单词(例如输入字符串$rstr = str_replace("Console", "<c>Console</c>", $str在哪里。 让我难过的是如何替换语音标记(“)和引号(')中的内容。例如,如果字符串“控制台”变成了,我将如何替换为(在外部样式表中定义)? 虽然我可以使用正则表达式,但是 1.我不知道如何编写正则表达式,2.我不知道如何将正则表达式与. $str

Console.WriteLine("Words");"Words"<sr>"Words"</sr><sr>

str_replace


我的解决方法:

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

2 回答 2

8

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

为了找到“任何东西都可以在这里”,您应该使用正则表达式。这就是他们的目的。一个正则表达式可能看起来像这个问题的答案:

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

那么你会像这样使用函数preg_replace()

$return_value = preg_replace('/"[^"]+"/', 'replacement text', $str)

无论如何都要把它留在这里:

只需用反斜杠转义内容:

$rstr = str_replace("Console", "Console.WriteLine(\"$variable\");", $str)

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

$rstr = str_replace("Console", 'Console.WriteLine("Words");', $str)

单引号将除单引号之外的所有内容都视为一个字符。

于 2012-04-06T17:18:30.690 回答
-1

这是我的解决方案。用 ( " ) 符号分解整个字符串,然后对它们中的每一秒运行一个特定的代码。这段代码会自动对 " 项目之后的每一秒值执行它,这意味着,如果你这样做:hej " lol ; 它会改变到 : hi <sr>" lol "</sr>; 或者如果你这样做 : hi "with " you ; 它会变成 : hi <sr>" with "</sr> you; 等等。

function wrapInside($text,$symbol)
    {
        $string = explode($symbol, $text);
        $i = 1;
        $QS = '';
        foreach( $queryString as $V )
        {
            ( $i == 1 ) ? ( $QS .= $V ) : ( $QS .= '<sr>"'.trim($V).'"</sr>' );
            ( $i == 1 ) ? ( $i = 0 ) : ( $i = 1 );
        }
        $queryString = trim($QS);
        return $queryString;
    }
于 2013-03-07T23:17:52.193 回答