Ben şu anda test edemez, çok emin değilim çalışıyor ... Ama belki bu deneyebilirsiniz:
The documentation of bbcode_create
describes the keys/values you can use to configure your tag.
One of these keys is :
content_handling
optional - Gives the
callback used for modification of the
content. Object Oriented Notation
supported only since 0.10.1 callback
prototype is string name(string
$content, string $argument)
Peki, ne tanımlarsanız bu özellik, bu örneğin, bir boş dize ayarlayarak bunu değiştirme ... içeriğini değiştirerek bir işleve bir bağlantı öyle mi?
Belki de böyle bir şey:
$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',
),
);
Ve remove_handler
işlevini bu şekilde ilan:
function remove_handler($content, $argument) {
return '';
}
Ya da belki bu şekilde:
function remove_handler(& $content, $argument) {
$content = '';
}
Biraz şans ile, bu içeriği kaldırmak için yeterli olabilir?
EDIT after the comment about my previous proposition
Merhaba tekrar,
Bu sefer, ben düşündüren bir şey denedim, ve ;-) çalışıyor gibi görünüyor
First, you can set ''
for both open_tag
and close_tag
; that way, the content_handling
callback will be responsible for all the work.
Something like this, so :
$tags = array(
'youtube' => array(
'type' => BBCODE_TYPE_NOARG,
'open_tag' => '',
'close_tag' => '',
'content_handling' => 'generate_youtube_tag',
),
);
Geri arama fonksiyonu daha sonra bu gibi görünecektir:
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 '';
}
}
Aslında YouTube'un id hem olaylara dahil tüm <object>
etiketini oluşturur.
Ve bunu şöyle diyebilir:
$text = '[youtube]w0ffwDYo00Q[/youtube]';
$bbHandler = bbcode_create($tags);
$output = bbcode_parse($bbHandler, $text);
var_dump($output);
Bu çıktıyı almak:
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)
Which kinda looks like something that should be ok ;-)
Actually, if you just ouput it :
echo $output;
Video yüklenir; o Simon's Cat 'Cat Man do', btw ;-) denir
Hope this solves your problem better, this time :-)