1

単純なマークに従って文字列の一部を変更する方法が必要です。例えば:

$string = "I'm student (at JIC college), and I'm GENIUS.";

at JIC collegeまたはかっこの間の単語を選択して、色を変更したい。(私は彼らの色を変える方法を知っています)。しかし、それを選択する方法を変更してから元に戻します。ブラケットが複数ある場合でも、それを行う方法。

$string = "I'm student (at JIC college), and I'm GENIUS (not really).";
4

4 に答える 4

2

これを達成するために a を使用できますpreg_replace

$string = "I'm student (at JIC college), and I'm GENIUS (not really).";

$string = preg_replace('/\(([^\)]+)\)/', '<span style="color:#f00;">$1</span>', $string);

残念ながら、選択したカプセル化が正規表現で失われ、エスケープが必要になるため、この例は少し不明確です。コードを明確にしたい場合は、括弧以外のものを使用します。

于 2013-04-18T06:27:41.967 に答える
0

この関数で () の間の文字列を取得します

function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}

$fullstring = "this is my [tag]dog[/tag]";
$parsed = get_string_between($fullstring, "[tag]", "[/tag]");

echo $parsed; // (result = dog)

と色を変更します。

于 2013-04-18T06:27:54.017 に答える
0

爆発()を使用できます:

$string = "I'm student (at JIC college), and I'm GENIUS (not really).";

$pieces = explode("(", $string );

$result = explode(")", $pieces[1]);

echo $result[0]; // at JIC college
于 2013-04-18T06:23:48.417 に答える
-1

正規表現を使用してこれを実現できます。

$colorized = preg_replace('/(\(.*?\))/m', '<span style="color:#f90;">($1)</span>', $string);
于 2013-04-18T06:25:46.453 に答える