2010-03-19 3 views
2

으로 바꿨습니다. "Hom이 PHP 함수로 DIV id를 변경하려고합니다."라는 질문을 올리면서 누군가가 정규 표현식으로 정답을 찾았습니다.어제 div 내용을 PHP

문제는이 대답을 다른 동일한 문제에 대한 방법에 대해 사용하고 싶다는 것입니다.

하지만 정규 표현식이 매우 좋지 않아 할 수 없습니다.

그래서 문제는 인 FCKEditor 일부 동영상을 업로드하고 내 데이터베이스에서 비디오 스크립트를 넣어이며, 결과는 같다 :

<div id="player959093-parent" style="text-align: center;float: left;"> 
<div style="border-style: none; height: 160px; width: 270px; overflow: hidden; background-color: rgb(220, 220, 220); background-image: url(http://localhost/fckeditor/editor/plugins/flvPlayer/flvPlayer.gif); background-repeat:no-repeat; background-position:center;"><script src="http://localhost/fckeditor/editor/plugins/flvPlayer/swfobject.js" type="text/javascript"></script> 
<div id="player959093"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player. 
<div id="player959093-config" style="display: none;visibility: hidden;width: 0px;height:0px;overflow: hidden;">url=/editeur/images/flash/FOO.flv width=270 height=160 loop=false play=false downloadable=false fullscreen=true displayNavigation=true displayDigits=true align=left dispPlaylist=none playlistThumbs=false</div> 
</div> 
<script type="text/javascript"> 
    var s1 = new SWFObject("http://localhost/editeur/javascript/fckeditor/editor/plugins/flvPlayer/mediaplayer.swf","single","270","160","7"); 
    s1.addVariable("width","270"); 
    s1.addVariable("height","160"); 
    s1.addVariable("autostart","false"); 
    s1.addVariable("file","/editeur/images/flash/FOO.flv"); 
    s1.addVariable("repeat","false"); 
    s1.addVariable("image",""); 
    s1.addVariable("showdownload","false"); 
    s1.addVariable("link","/editeur/images/flash/FOO.flv"); 
    s1.addParam("allowfullscreen","true"); 
    s1.addVariable("showdigits","true"); 
    s1.addVariable("shownavigation","true"); 
    s1.addVariable("logo",""); 
    s1.write("player959093"); 
</script></div> 
</div> 

내 PHP 페이지에서 한 번에이 내용을 에코, 그것은 작동 큰. 두 번 이상, 비디오가 나타나지 않습니다. 고유 ID로 인해 어느 것이 명확한 입니다. 당신이 볼 수 있듯이 , 내용은이 ID를 가지고

div id="player959093-parent" 
div id="player959093" 
div id="player959093-config 
s1.write("player959093"); 

그래서 내 질문은 : 문자열 "player959093"를 교체하거나 디스플레이 문제를 해결하기 위해 다른 문자열을 연결할 수있는 기능이 있습니까?

대단히 감사합니다. 감사합니다.

답변

2

preg_replace_callback 기능을 시도해보십시오

$HTMLCODE="Your html code"; 
$fn=create_function('$matches','$replacement="player".mt_rand();return preg_replace("#player\d+#",$replacement,$matches[0]);'); 
echo preg_replace_callback("#<div[^>]*id=\"player\d+-parent\".*?</script>\s*</div>\s*</div>#si",$fn,$HTMLCODE); 

내가 코드를 테스트하지했지만 그것은 작동합니다.

+0

이 정규식을 가져 주셔서 감사합니다! – Zakaria

0

왜 연결 연산자 도트 '를 사용하지 마십시오.'

"a" . "b" = "ab" 
+0

어떻게 할 수 있습니까? 고맙습니다! – Zakaria

관련 문제