2014-02-10 1 views
0

내가이PHP 3가 인 (

$myStr ="<font face=\"#3#\" size=\"6\">TEST STRING</font>"; 

같은 템플릿 문자열 그리고이

$fontList = array(
    0 => "ubuntumono", 
    1 => "opensans", 
    2 => "opensanscondensed", 
    3 => 'opensanslight', 
    4 => 'exo2', 
    5 => 'exo2light' 
); 

지금은 face=\"#3#\" 내 문자열을 확인하려면 같은 글꼴의 배열을 가지고 데이터 배열에서 대체 정규식 $ fontList의 글꼴 색인)

face=\"opensanslight\"

Regex & PHP로 어떻게 할 수 있습니까? 고맙습니다.

답변

3

PHP 5.3.0 또는 가정 더 나은 :

$myStr = preg_replace_callback('/#(\d+)#/', function ($matches) use ($fontList) { 
    return $fontList[$matches[1]]; 
}, $myStr); 
가 따옴표로 둘러싸여있을 경우에만 #number#을 변경하려는 경우

Example

:

$myStr = preg_replace_callback('/"#(\d+)#"/', function ($matches) use ($fontList) { 
    return '"' . $fontList[$matches[1]] . '"'; 
}, $myStr); 

Example

+0

을 '$ matches'의 색인은 0이어야합니까? 내가 틀리지 않다면 – zzlalani

+0

번호'$ matches [0]'은'# 3 #'이 될 것입니다. '$ matches [1]'은'3'이 될 것입니다. –

+0

오오. 멋진 답변 (Y) – zzlalani

관련 문제