2011-01-27 4 views
0

교류 srings로 문자열을 대체 :PHP 내가이 같은 텍스트 뭔가가

$sText =  
    "www.domain.com 
    www.domain.com 
    www.domain.com 
    www.domain.com 
    www.domain.com 
    ..."; 

가 지금은 하위 도메인 (예를 들어, 3 개 하위 도메인)에 도메인을 확산 할을, 그래서 그 결과는 다음과 같아야합니다

를 도움을
$aSubs = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com"); 
$sResult = 
"www.sub1.domain.com 
www.sub2.domain.com 
www.sub3.domain.com 
www.sub1.domain.com 
www.sub2.domain.com 
..." 

감사합니다 ... 당신의 대체 콜백에서

답변

1

이 비슷한 수행

012,382을

내가 당신에게 정규식을 작성 떠날거야

PS를 (당신이 어떤 세부 사항을 제공하지 않았다한다.) : 함수의 static 키워드는 여러 함수 호출 사이에 유지되는 변수를 참조.

0

이 일할 수 : 당신이 PHP 5.3이있는 경우

<?php 
$count = 0; 
$subdomains = array("www.sub1.domain.com", "www.sub2.domain.com", "www.sub3.domain.com"); 

$text = <<<XXX 
www.domain.com 
www.domain.com 
www.domain.com 
www.domain.com 
www.domain.com 
XXX; 


function createSub($matches) 
{ 
    global $subdomains,$count; 
    $index = $count++ % count($subdomains); 
    return $subdomains[$index]; 
} 
echo preg_replace_callback(
      "#(www)(\..+)#m", 
      "createSub", 
      $text);  
1

가 :

preg_replace_callback($sText, "#www\.domain\.com#", function() { 
    static $index = 0; 
    $subdomains = array(
     "www.sub1.domain.com", 
     "www.sub2.domain.com", 
     "www.sub3.domain.com", 
     "www.sub1.domain.com", 
     "www.sub2.domain.com", 
    ); 
    return $subdomains[$index++ % count($subdomains)]; 
}); 
+0

불행하게도 4.3 PHP로. – Ilyssis

+0

@Ilysis : Even 5.3 ^^하지만'function()'코드를 별도의 함수에 넣고 함수의 이름을 따옴표로 'preg_replace_callack'에 전달하면 똑같은 일을 할 수 있습니다. – NikiC

관련 문제