2013-04-18 2 views
1

간단한 기호에 따라 문자열 부분을 변경하는 방법이 필요합니다. 예를 들면 :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)."; 
+0

중첩 된 괄호가 있다면? 서로 괄호처럼? – 1337holiday

+0

'preg_replace()'가 원하는 것을 무엇입니까? – Barmar

+0

@ 1337holiday'(aaa (asddsd) asasd)와 같은 내부 내용을 변경하고 싶습니다. '이'aaa (asddsd) asasd '를 변경하고 싶습니다 ... 어렵습니다. –

답변

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

불행히도이 예제는 선택한 캡슐화가 정규식에서 손실되어 이스케이프 처리해야하기 때문에 약간 분명하지 않습니다. 코드를 명확하게 작성하려면 대괄호 이외의 다른 것을 사용하십시오! 이 기능

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) 

및 색상을 변경하여 사이

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

당신이 사용하는 정규 표현식을 achive 수 있습니다

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

다른 중괄호를 추가 하시겠습니까? – BlitZ

+0

@CORRUPT주의 깊게 살펴보면 응답을 작성한 시점의 요청이 아니라는 것을 알 수 있습니다. 어쨌든 나는 그러므로 해결책에 종사하고있다 그리고 나는 준비되어 있 자마자이 포스트를 새롭게 할 것이다 –

0

가져 오기 문자열().

관련 문제