2013-04-18 35 views
1

我想根据简单标记更改部分字符串的方法。例如:PHP:选择字符串的一部分(从)并对其应用更改

$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)."; 
+0

如果你有嵌套括号,该怎么办?像对方括号一样? – 1337holiday 2013-04-18 06:20:51

+0

'preg_replace()'做你想要的吗? – Barmar 2013-04-18 06:23:51

+0

@ 1337holiday尽管我想改变里面的东西像'(aaa(asddsd)asasd)'我想改变这个'aaa(asddsd)asasd' ...这将会很难吗? – 2013-04-18 06:25:07

回答

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); 

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

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 
-1

可以实现这一目标使用正则表达式:

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

添加另一个大括号? – BlitZ 2013-04-18 06:45:37

+0

@CORRUPT如果你仔细观察,你会注意到在我写答案的时候没有要求。无论如何,我正在研究解决方案,因此一旦准备就绪,我会更新这篇文章 – 2013-04-18 06:53:40

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) 

,并改变颜色。

相关问题