Edit report at https://bugs.php.net/bug.php?id=59274&edit=1

 ID:                 59274
 Comment by:         hiram_ at gmx dot net
 Reported by:        hiram_ at gmx dot net
 Summary:            Add parser callback for non BBcode strings
 Status:             Open
 Type:               Feature/Change Request
 Package:            bbcode
 Operating System:   Solaris
 PHP Version:        5.3.2
 Block user comment: N
 Private report:     N

 New Comment:

I believe that a callback at the same point were smileys are parsed would 
suffice. At least if i understand the code correctly.


Previous Comments:
------------------------------------------------------------------------
[2011-06-18 11:10:08] hiram_ at gmx dot net

On second thought: a default handler would not be enough since given this 
example 
"hello [b]this is [i]bold[/i] not italic[/b]"
it would be called with 
"bold", 
"this is <em>bold</em> not italic" and 
"hello <strong>this is <em>bold</em> not italic</strong>"

instead of "hello", "this is ", "bold" and "not italic"

so my handler would only be called with leaf nodes (if you consider every text 
in a tag seperated by another tag as a seperate node like in xml happens)

This is usefull to have for example nl2br as a default text content handler and 
be able to disallow it in certain tags

------------------------------------------------------------------------
[2010-12-02 18:59:02] hiram_ at gmx dot net

Yes, i think that would suffice.

------------------------------------------------------------------------
[2010-06-20 11:29:36] xdecock at gmail dot com

it will be a default content handling?

better to add a function bbcode_set_default_handler() IMHO,

if this is ok for you, i can make a publication in a few hours.

Xavier.

------------------------------------------------------------------------
[2010-06-20 09:57:23] hiram_ at gmx dot net

Description:
------------
I want to replace newlines with <br /> while parsing BBcode and do some more 
special replacements. But since our youtube tag replacement includes some 
newlines, those are replaced by <br /> to. 

Is it possible to add an generic content handler?

so for example for the string "hello [b]this[/b] is [i]bold[/i]"

and the parser below

that handler would get called with "hello ", " is " and "this"

Reproduce code:
---------------
<?php
$string = "hello [b]this[/b] is [i]bold[/i]";


$BBCode = array(
''=> array( 
   'type' => BBCODE_TYPE_ROOT),
'generic'=> array( 
   'type' => BBCODE_TYPE_GENERIC,
   'content_handling'=> 'contentHandler'),
'b'=> array(
   'type' => BBCODE_TYPE_NOARG,
   'open_tag'=> '<strong>',
   'close_tag'=> '</strong>'),
'i'=> array(
   'type' => BBCODE_TYPE_NOARG,
   'child' => '!generic',
   'open_tag'=> '<em>',
   'close_tag'=> '</em>'),
);

$BBHandler = bbcode_create($BBCode);
bbcode_parse($BBHandler, $string);

function contentHandler($content)
{
 echo "'$content'\n";
}
?>

Expected result:
----------------
'hello '
'this'
' is '




------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=59274&edit=1

Reply via email to