4

そこで、テキストの強調表示システムを作成することにしました。現時点ではstr_replace、単語を置き換えるために使用しているだけです(たとえば、入力文字列は$rstr = str_replace("Console", "<c>Console</c>", $strどこですか。 私を困惑させたのは、スピーチマーク(")と引用符(')内のコンテンツを置き換える方法でした。たとえば、文字列 " Console" が になった、 (は外部スタイルシートで定義されている) に置き換えるにはどうすればよい ですか?で正規表現を使用する方法。 $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

これが私の解決策です。文字列全体を( ")記号で展開し、特定のコードを1秒ごとに実行します。このコードは、" itemの後の1秒ごとの値に対して自動的に実行します。つまり、:hej"lol;変更されます。 to 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 に答える