我想要一种根据简单标记改变字符串部分的方法。例如:
$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).";
答案 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);