(Hallo|Hi(ho)|Tag) kointa,
Also alle anderen funktionen funktionieren einwandfrei, habe in meinem beispiel nur den <embed> und den namen ersetzt !?!?
Nun ja, manchmal ist es ganz gut, wenn man wenigstens grob nachvollziehen kann, was ein Script so tut, bevor man versucht, per
Copy-N-Paste was Eigenes draus zu machen. ;-)
hier mal der link zu dem plugin, vielleicht kannste dann erkennen wie ich meinen code verändern muss.
Skript
Herrjeh, sind alle Wordpress-Plugins so zusammengebastelt?
Steht diese Kombination irgendwo in deinem zu durchsuchendem Text?
Also das Skript funktioniert so wie es aufgebaut ist, das ist ja nciht von mir, habe nur einen "SEVENLOAD" durch "OWN" ersetzt.
»»daran kannst also irgendwie nicht liegen !?
Bääh, was für ein Umstand, extra für preg_replace_callback() eine Ersetzen-Funktion zu basteln.
Im englischen Wort "replace" steckt doch das "Ersetzen" schon drin ...
Skript ist nicht von mir :( ;)
Gegen eine zusätzliche Callback-Funktion für preg_replace() ist ja nichts einzuwenden, wenn die Ersetzung etwas komplexer ist,
aber den Ersetzungsstring nochmal zu durchsuchen und darin Teile zu ersetzen, erscheint mir irgendwie zu umständlich. Ich würde
das eher so lösen:
function own_plugin_callback($match) {
// dieser Wert wird benutzt, wenn keine Breite oder der Wert '0' angegeben wurde
static $default_width = '380';
// dito fuer die Hoehe
static $default_height = '313';
return '<embed type="application/x-shockwave-flash" height="' .
(empty($match[3]) ? $default_height : $match[3]) .
'" width="' .
(empty($match[2]) ? $default_width : $match[2]) .
'" src="http://www.choiz.extra.hu/mediaplayer.swf?file=' .
$match[1] .
'&backcolor=0x000000&frontcolor=0xCCCCCC&lightcolor=0x000000&screencolor=0x000000&searchbar=false&autostart=false" ' .
'loop="true" quality="high" bgcolor="#000000" name="flvplayer" align="middle" allowScriptAccess="sameDomain" ' .
'allowFullScreen="true" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed>';
// diese letzten drei Zeilen bitte zusammenfassen, ich hab die nur aufgeteilt,
// damit der Quelltext in (d|m)einem Editor
// etwas "uebersichtlicher" angezeigt wird.
// fuer das Forum hier ist er auch schon zu breit ...
}
function own_plugin($content) {
// moegliche BBCode-Muster: [own kurz-url] oder [own kurz-url breite hoehe]
// own kann groß- oder kleingeschrieben werden ("case insensitive")
return preg_replace_callback('/\[own\s+([^\]\s]+?)(?:\s+([0-9]+)\s+([0-9]+))?\]/iS', 'own_plugin_callback', $content);
}
Das ist gut. Dann lerne schnell preg_replace() und PCRE in PHP anzuwenden. ;-)
Werds versuchen :D Danke
Hier mal noch einige weitere hilfreiche Links zum Verständnis:
* empty()
* preg_replace_callback()
* Unterschiede zwischen Stringliterale in einfachen und doppelten "Hochkommas"
* Zeichenkettenoperator
* Die Handbuchseite zu den Vergleichsoperatoren beschreibt kurz den Konditional- oder Trinitäts-Operator '?:'
Wenn du dich dann noch mit der HEREDOC-Notation von Zeichenketten-Konstanten befasst hast, kannst du die Callback-Funktion auch anders schreiben:
function own_plugin_callback($match) {
$width = !empty($match[2]) ? $match[2] : '380'; // dieser Wert wird benutzt,
//wenn keine Breite oder der Wert '0' angegeben wurde
$height = !empty($match[3]) ? $match[3] : '313'; // dito fuer die Hoehe
$url = $match[1];
return <<<HTMLWUST
<embed type="application/x-shockwave-flash" height="$height" width="$width" src="http://www.choiz.extra.hu/mediaplayer.swf?file=$url&backcolor=0x000000&frontcolor=0xCCCCCC&lightcolor=0x000000&screencolor=0x000000&searchbar=false&autostart=false" loop="true" quality="high" bgcolor="#000000" name="flvplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed>
HTMLWUST;
}
MffG
EisFuX