2010-08-02 6 views
1

포함 된 preg_replace_callback 함수를 통해 실행중인 URL 배열이 있습니다. 각 루프가 새로운 결과를 생성한다는 아이디어입니다.preg_replace_callback stuck

문제는 첫 번째 URL을 처리 한 후 마치 멈춘 것처럼 첫 번째 결과 만 계속 출력한다는 점입니다.

if (!function_exists('name')) { 
function name($match) 
{ 
return($match[1]); 
} 
$foo = preg_replace_callback("#[regex]#", "name", $bar); 
} 

어떤 아이디어를 내가이 제대로 작동하려면 얻을 수있는 방법 : 여기

코드인가? 감사. 당신이 배열의 모든 요소에 기능 preg_replace_callback()을 적용하는 경우

+0

있습니까 단순히 코드를 설명하기 위해 단순화하거나 실제 코드입니까? – NullUserException

+0

실제 코드를 게시하십시오. – Artefacto

+0

예, 코드를 단순화하고 있습니다. 개별 스크립트에서 사용하면 잘 작동합니다. 정규식은 모든 것을 완벽하게 집어 내며 출력합니다. URL 배열 당 동일한 스크립트 내에서 두 번 이상 사용될 때 걸림돌 만 치면됩니다. –

답변

0

, 당신은이 작업을 수행 할 수 있습니다 :

// put this on the top of the file 
function name($match) { 
    return($match[1]); 
} 

을 그리고, 배열의 요소를 반복하기 : 당신이

foreach ($array as $value) { 
    $foo = preg_replace_callback("#[regex]#", "name", $value); 
    // do stuff with $foo 
} 
+0

내가 거기에 그것을 배치하기 전에 그것은 기능 오류를 다시 선언 할 수 없기 때문에 실행되지 않을 것입니다. 실제 정규식과 모두를 원하십니까? 제가 말했듯이, 코드는 개별 스크립트에서 한 번 사용되면 의도 된대로 작동합니다. 문제가있는 동일한 스크립트 내에서 여러 용도로 사용됩니다. 즉, 첫 번째 결과를 반복해서 계속 반환합니다. –

+0

@Clarissa 그 이유는 함수 선언을 루프에 넣지 않기 때문입니다. – NullUserException

+0

흠, 저에게는 효과가 없지만 여전히 오류를 재 선언 할 수는 없습니다. 내 코드의 요지를 게시하여 내가하는 일을 더 잘 이해할 수 있다고 생각합니다. $ urls = array(); foreach ($ urls as $ url) { $ ch = curl_init(); 여기 --- --- 컬 코드 의 foreach ($의 ABC [0] XYZ 달러로) {여기서 --- --- 많은 코드 $ 바가 --input here-- 정의 = 함수 이름 ($ match) { return ($ match [1]); } $ foo = preg_replace_callback ("# [정규식] #", "이름", $ bar); // 재활용 할 수있는되어 내려 오는 어떤 $ foo는 } }이 도움이 희망으로 물건을 할. –

관련 문제