Ich kann jetzt nicht testen, also nicht sicher, dass es funktioniert ... Aber vielleicht können Sie dies versuchen:
Die Dokumentation von bbcode_create
beschreibt die Schlüssel/Werte, die Sie Ihren Tag konfigurieren können.
Einer dieser Schlüssel ist:
content_handling
optional - Gibt die Rückruf zur Modifikation des Gehalt verwendet. Objektorientierte Notation nur unterstützt, da 0.10.1 Rückruf Prototyp ist string name (string $ content, string $ Argument)
Also, was ist, wenn Sie diese Eigenschaft definieren, so dass es ein Link zu einer Funktion Ändern des Inhalts ... Ändern Sie ihn zum Beispiel, indem Sie ihn auf eine leere Zeichenfolge setzen?
So etwas, vielleicht:
function remove_handler($content, $argument) {
return '';
}
Oder vielleicht auf diese Weise:
$tags = array(
'youtube' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' =>
'<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/{CONTENT}"></param>
<embed src="http://www.youtube.com/v/{CONTENT}" type="application/x-shockwave-flash" width="425" height="350"></embed>
</object>',
'close_tag' => '',
'content_handling' => 'remove_handler',
),
);
Und die remove_handler
Funktion auf diese Weise erklärt
function remove_handler(& $content, $argument) {
$content = '';
}
Mit etwas Glück, Dies könnte ausreichen, um den Inhalt zu entfernen?
EDIT nach dem Kommentar zu meinem vorherigen Satz
Hallo wieder,
Dieses Mal habe ich versucht, was ich vorschlage, und es scheint zu funktionieren ;-)
Erstens können Sie ''
gesetzt sowohl für open_tag
und close_tag
; Auf diese Weise wird der content_handling
Rückruf für die gesamte Arbeit verantwortlich sein. sehen wie folgt aus
$tags = array(
'youtube' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '',
'close_tag' => '',
'content_handling' => 'generate_youtube_tag',
),
);
Die Callback-Funktion würde dann:
So etwas wie dies, so
function generate_youtube_tag($content, $argument) {
// TODO some security checks on $content !
// Here, I've assumed that a youtube id only contains letters and numbers
// But I don't know it that's always the case
if (preg_match('/^[\d\w]+$/', $content)) {
return <<<NEW_CONTENT
<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/{$content}"></param>
<embed src="http://www.youtube.com/v/{$content}" type="application/x-shockwave-flash" width="425" height="350"></embed>
</object>
NEW_CONTENT;
}
else {
return '';
}
}
Es erzeugt tatsächlich die ganze <object>
Tag, einschließlich der beiden Vorkommen der YouTube-ID.
Und wenn man es so nennen:
$text = '[youtube]w0ffwDYo00Q[/youtube]';
$bbHandler = bbcode_create($tags);
$output = bbcode_parse($bbHandler, $text);
var_dump($output);
Sie diese Ausgabe erhalten:
string '<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/w0ffwDYo00Q"></param>
<embed src="http://www.youtube.com/v/w0ffwDYo00Q" type="application/x-shockwave-flash" width="425" height="350"></embed>
</object>' (length=246)
Welche ein bisschen wie etwas aussieht, das ;-)
Eigentlich ok sein sollte, wenn Sie geben es einfach aus:
echo $output;
Das Video ist geladen. es Simons Katze 'Katze Mann tun', btw ;-)
Hope this löst Ihr Problem besser, diesmal :-) für Ihre Antwort
Dank genannt. Der Inhalt wird entfernt, aber leider geschieht dies, bevor es in den HTML-Code gerendert wird;) – marcusj
Wie :-(schade :-( –
Habe gerade meine Antwort bearbeitet, mit einem anderen Vorschlag, der diesmal zu funktionieren scheint ;-) –