Заменить содержимое div на PHP - PullRequest
2 голосов
/ 19 марта 2010

вчера я опубликовал вопрос на тему: «Хм, чтобы изменить идентификатор 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, он прекрасно работает. Не раз видео не появляются. Что очевидно из-за уникального идентификатора. Как видите, контент имеет следующие идентификаторы:

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

Так что мой вопрос: есть ли функция, которая может заменить строку «player959093» или объединить ее с какой-то другой строка для решения проблемы с отображением?

Большое спасибо, Привет.

Ответы [ 2 ]

2 голосов
/ 19 марта 2010

Попробуйте с функцией 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 голосов
/ 19 марта 2010

Почему бы вам не использовать оператор конканации точка '.'

"a" . "b" = "ab"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...