2012-09-25 3 views
0

나는 다음은 텍스트 내에서 발견 될 때, 그래서 후크를 만들려고 오전 :PHP의 preg_replace이다 계산

level,2 

그것은되는 쉼표 뒤의 숫자와 함께, $skill_level * $n으로 대체 $n

$skill_level = 2; 

$row['s_effect'] = "Long string of text that contains level,2." 

preg_replace("/level,$n/",$skill_level * $n,$row['s_effect']) 

내가의 결과는 무엇입니까 :

를 여기

내가 가진 무엇 이 계산 보인다 어떤 이유로 "$skill_level * $n" (2 * 2) 작동하지 않습니다를 들어

Long string of text that contains 4. 

:

Long string of text that contains 02. 

나는 결과를 원한다.

답변

3

당신은 당신이보고 숨김 주장을 사용하는 대신에 단지 메모리 그룹을 사용하는 이유는 특별한 이유가있을 것입니다, 그냥 관심 밖으로 preg_replace_callback

$skill_level = 2; 
$text = "Long string of text that contains level,2."; 

$ret = preg_replace_callback("/level,(\d+)/", function ($matches) use ($skill_level) { 
    return $matches[1] * $skill_level; 
}, $text); 
+0

를 사용할 필요가? –

+0

닫기이 질문은 답변을 얻는다고 생각합니다. 레벨이 4 인 긴 텍스트 문자열. 다음과 같아야합니다. 긴 텍스트 문자열 4를 포함합니다. – user1625155

+0

이 솔루션을 작동 시키려면 $ ret를 호출 할 때 preg_replace ("/ level, /", "", $ ret)를 사용하십시오. – user1625155