PHP:选择字符串的一部分(从中)并对其应用更改

时间:2013-04-18 06:19:08

标签: php

我想要一种根据简单标记改变字符串部分的方法。例如:

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

我想选择at JIC college或括号之间的任何字词并更改其颜色。 (我知道如何改变他们的颜色)。但如何选择它会改变它然后把它放回去。即使我有超过1个括号,如何做到这一点。

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

4 个答案:

答案 0 :(得分:2)

您可以使用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);

不幸的是,这个例子有点不清楚,因为你选择的封装会在正则表达式中丢失而需要转义。如果您要使代码清晰,我会使用括号以外的东西!

答案 1 :(得分:0)

您可以使用explode()

$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

答案 2 :(得分: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)

并更改颜色。

答案 3 :(得分:-1)

您可以使用正则表达式实现此目的:

$colorized = preg_replace('/(\(.*?\))/m', '<span style="color:#f90;">($1)</span>', $string);