[pmwiki-users] Irreproducible behavior - maybe a bug

Joachim Durchholz jo at durchholz.org
Tue May 10 16:07:55 CDT 2005

Hi all,

I'm despairing over getting a markup to work. Depending on whether 
preg_replace was called before or not, Markup() will enter an endless 

This works:

'<input size="" value="" style="">');

This does not:

   $text = '';
   $size = '';
   $attrs = '';
   $field = 'To';
   $MailForm2[$field . 'Text']
     = '<input size="$size" value="$text"$attrs>';
   $replacement =
       array('/\\$text/', '/\\$size/', '/\\$attrs/'),
       array(htmlentities($MailForm2[$field . 'Text']), $size, $attrs),
     '/\\(:mailform2\\s' . $field . ':\\)/i',

I have traced it down to Markup(), where it says
       foreach((array)@$MarkupTable[$id]['dep'] as $i=>$m)
Most of the time, if $MarkupTable[$id]['dep'] isn't defined, the (array) 
it will create an empty array just alright, but after calling 
preg_replace(), this generates
   array (0 => '')
and when iterating that array in the foreach loop, it will look like
   array ('' => 'mailform2-To')

I'm using PHP 4.1.2.


On a tangent: if somebody knows a better way to first define a string as
   'bla $var blub'
and, later, have $var substituted in it, I'd be grateful. That 
preg_replace thing is rather unwieldy anyway. (I have considered eval(), 
but it seems to defeat the purpose of precompilation so I'm a bit 
cautious about it.)


More information about the pmwiki-users mailing list