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

PHP:选择字符串的一部分(从到)并对其应用更改,php,Php,我想要一种方法来改变字符串的一部分,根据简单的标记。例如: $string = "I'm student (at JIC college), and I'm GENIUS."; 我想在JIC学院选择,或括号中的任何单词,并更改它们的颜色。(我知道如何改变它们的颜色)。但如何选择它,改变它,然后把它放回去。即使我有一个以上的括号,如何做到这一点 $string = "I'm student (at JIC college), and I'm GENIUS (not really)."; 您可以

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

$string = "I'm student (at JIC college), and I'm GENIUS.";
我想在JIC学院选择
或括号中的任何单词,并更改它们的颜色。(我知道如何改变它们的颜色)。但如何选择它,改变它,然后把它放回去。即使我有一个以上的括号,如何做到这一点

$string = "I'm student (at JIC college), and I'm GENIUS (not really).";
您可以使用:

您可以使用:


您可以使用正则表达式实现这一点:

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

您可以使用正则表达式实现这一点:

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

您可以使用
preg\u replace
来实现这一点

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

$string = preg_replace('/\(([^\)]+)\)/', '<span style="color:#f00;">$1</span>', $string);
$string=“我是学生(在JIC学院),我是天才(不是真的)。”;
$string=preg\u replace('/\([^\]+)\)/'、'$1',$string);

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

您可以使用
preg\u replace
来实现这一点

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

$string = preg_replace('/\(([^\)]+)\)/', '<span style="color:#f00;">$1</span>', $string);
$string=“我是学生(在JIC学院),我是天才(不是真的)。”;
$string=preg\u replace('/\([^\]+)\)/'、'$1',$string);
不幸的是,这个例子有点不清楚,因为您选择的封装在正则表达式中丢失了,需要转义。如果你想让代码更清晰,我会用括号以外的东西

通过此函数获取()之间的字符串

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)
并更改颜色。

通过此函数获取()之间的字符串

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)

然后更改颜色。

如果有嵌套的括号怎么办?就像彼此之间的括号一样?
preg_replace()
做你想做的事吗?@1337holiday即使我想改变它里面的内容,比如
(aaa(asddsd)asassd)
我想改变这个
aaa(asddsd)assd
。。。这会很难,不是吗?如果你有嵌套的括号呢?就像彼此之间的括号一样?
preg_replace()
做你想做的事吗?@1337holiday即使我想改变它里面的内容,比如
(aaa(asddsd)asassd)
我想改变这个
aaa(asddsd)assd
。。。这会很难,不是吗?@如果你仔细看,你会发现在我写答案的时候它不是请求者。无论如何,我正在研究一个解决方案,所以我会尽快更新这篇文章ready@CORRUPT如果你仔细看的话,你会发现在我写答案的时候它不是requestet。无论如何,我正在制定一个解决方案,因此,我会更新这篇文章,一旦它准备好