2013-04-17 2 views
0

preg_replace 함수에 관해서도 여전히 완전히 잃어 버렸습니다. 그래서 누군가 제가이 도움을 주었다면 매우 행복 할 것입니다.Preg_replace php 함수에 두 번째 매개 변수 추가하기

내가 좋아하는 함수를 호출 포함 할 수있는 문자열이 있습니다 Published("today")을 나는 Published("today", 1) 나는 기본적으로 정규 표현식을 통해 함수에 두 번째 매개 변수를 추가 할 필요가

에 정규 표현식을 통해 변환해야합니다. 첫 번째 매개 변수는 영숫자 텍스트 일 ​​수 있으므로 str_replace를 사용할 수 없습니다.

+0

$ foo = preg_replace ('게시 \ ("오늘"\), 게시 \ ("오늘", 1 \)); – Tony

+0

안녕하세요, "오늘"매개 변수가 단지 쇼를위한 것이기 때문에 그럴 수는 없습니다. 아무 것도 될 수 있습니다 ... – Enn

답변

0
$string = 'Published("today")'; 
$foo = preg_replace('/Published\("(\w+)"\)/', 'Published("$1", 1)', $string); 
+0

감사하지만, 여전히 오류가 표시됩니다. 구분 기호는 영숫자 또는 백 슬래시가 아니어야합니다. 이 여러 번 발생하고 그것을 알아낼하지 못했습니다 .. 당신이 조정할 수 있습니다 아주 제발? – Enn

+0

정규식 구분 기호를 깜박했습니다. 업데이트를 참조하십시오. –

+0

너는 대단하며 너는 나의 저녁을 구했다. 너를 대단히 감사한다! – Enn

0

preg_replace_callback 내가해야 할 일을해야합니다.

<?php 
$string = 'Published("today"); Published("yesterday"); Published("5 days ago");'; 

$callback = function($match) { 
    return sprintf('%s, 1', $match[0]); 
}; 

$string = preg_replace_callback(
    '~(?<=Published\()"[^"]+"(?=\))~', 
    $callback, 
    $string 
); 

echo $string; 

/* 
    Published("today", 1); Published("yesterday", 1); Published("5 days ago", 1); 
*/ 
+0

왜 콜백을 사용합니까? –

관련 문제