On Wed, Aug 26, 2009 at 02:51:02AM +0200, Melodye Bowers wrote:
> $foo = array('John' => 'http://www.abc.com', 'Sally' => 'http://www.def.com');
> foreach ($foo as $name => $site) {
>    Markup('/\b'.$name.'\b/', '%newwin%'.$site.'%%', ...);
> }
> 
> Does that work?  

It "works", but only for very small numbers of names.  After adding
100 or so such rules the speed of markup processing will degrade 
noticeably.

Better would be to combine all of the names into a single markup rule
(code below is untested, for illustration only):

    $foo = array('John' => 'http://www.abc.com', 
                 'Sally' => 'http://www.def.com');

    Markup('names', 'inline',
      '/\b(' . join('|', array_keys($foo)) . ')\b/e',
      "'[['.\$foo[$1].'|'.Keep('$1').']]'");

It's also possible that one could make use of the $IMap array
for this in config.php (also untested):

    $IMap['John'] = 'http://www.abc.com/';
    $IMap['Sally'] = 'http://www.def.com/';

Pm

_______________________________________________
pmwiki-users mailing list
[email protected]
http://www.pmichaud.com/mailman/listinfo/pmwiki-users

Reply via email to