2014-09-07 3 views
0

의 시작에서 대체 콘텐츠를 반환 때문에 나는 그 문제에 많은 시간을 잃고, 난 정말 사임 해요preg_replace이다 - 나는 모든 결과의 beggining에 가고, create_function와 preg_replace이다를 사용하는 경우 .. <p></p>를 출력

COMPONENT1 COMPONENT 2 마에 케 나스 malesuada ELIT lectus 펠리스, malesuada의 ultricies : 출력은, 그러나 그들은처럼 설립 일치의 자리에 있어야합니다. Curabitur 외과. Ut molesie, ultricies porta urna. 전리품, volutpat a, convallis ac, laoreet enim. Phasellus fermentum에서, dolor. 펠 텐 메스 시설. Nulla imperdiet amet magna를 앉는다. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi.

되어야한다 :

마에 케 나스 malesuada ELIT lectus 펠리스, malesuada의 ultricies. Curabitur 외과. Ut molesie, ultricies porta urna. 전리품, volutpat a, convallis ac, laoreet enim. Phasellus fermentum COMPONENT1에서, dolor. 펠 텐 메스 시설. Nulla imperdiet 앉아 amet magna COMPONENT2. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi.

function getcomponent($source){ 
    $get = getXML(datadir.$source.'.xml')->content; 
    $getcomp = create_function("",' ?>'.$get.'<?php '); 
    $getcomp(); 
} 

preg_match_all("/\[\#PHP (.*?) \#\]/",$content,$content3); 

foreach ($content3[1] as $value) { //$content3[0] 
    $content2 = preg_replace("/\[\#PHP ".$value." \#\]/",getcomponent($value),$content); 
    $content = $content2; 
} 

나는 모든 팁을위한 매우 감사하게 될 것입니다. 건배!

+0

예를 들어 코드를 단순화하면 조금 배 밖으로 나갔다고 생각합니다. 몇 가지 질문 : 왜 그런 함수를 작성한 다음 바로 호출할까요? $ 콘텐츠 란 무엇입니까? 일반적으로 당신은 여기서 무엇을하려고합니까? 그것은 당신이 파일에서 XML을 받고있는 것, 당신은 그것으로 무엇을하고 싶습니까? –

+0

안녕하세요! $ content는 XML 파일의 페이지 콘텐츠입니다. 그 콘텐츠 안에는 [# component1 #] 및 [# component2 #] 같은 것이 있는데 component1.xml 및 component2.xml의 콘텐츠로 대체하려고합니다. 하지만 그 구성 요소 xml의 일반 PHP 코드가 있는데 실행하고 싶습니다. 왜이 create_function을 사용합니까? eval() 함수에 대한 재정의입니다. –

답변

0

getcomponent 함수는 검색된 XML을 인쇄하지 않고 반환해야합니다.

function getcomponent($source){ 
    $get = getXML(datadir.$source.'.xml')->content; 
    $getcomp = create_function("",' ?>'.$get.'<?php '); 
    ob_start(); 
    $getcomp(); 
    return ob_get_clean(); 

} 

트릭을해야합니다.

+0

네, 맞아요,하지만이 방법은 일반 PHP 코드를 반환했습니다. , PHP –

+0

에 의해 평가되지 않은 출력 버퍼를 사용하여 출력에 변수를 반환하고 그 반환합니다. 프레임 워크를 사용하는 경우 이미 출력 버퍼링을 사용하고 있지 않은지 확인하십시오. –

+0

당신은 영웅입니다! 빛나는 작품! –