вчера я отправил вопрос о том, «Hom, чтобы изменить идентификатор 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» или связать ее с какой-либо другой строкой, чтобы решить проблему отображения?
Большое вам спасибо, С уважением.
Попробуйте функцию 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);
Я не тестировал код, но он должен работать.
Почему бы вам не использовать оператор конкатенации dot '.'
"a" . "b" = "ab"