pre-plugin
                                
                                 pre-plugin copied to clipboard
                                
                                    pre-plugin copied to clipboard
                            
                            
                            
                        Case <?php in the PHP script itself
The plugin assumes that <?php is not present in the script itself. If <?php is included in the file, at any point, the engine injects the macro.yay in the result.
You can verify the issue in this file, processing it with any plugin: https://github.com/symfony/translation/blob/master/Translator.php#L344
As a workaround, I've implemented in the caller a preprocessing of the text to escape <?php before the call. But, I think it has to be fixed in the engine to support any PHP script.
I see what you're saying, but I can't get my head around a fix. Could you show me the code you've used to work around it, so I can get a better understanding of what needs to be done?
The workaround is very simple. It just replaces the additionals <php with an encoded tag ºººhp. After the processing, it reverts the encoding:
// Escape <?php in the script text
$code = substr($code, 5);
$code = str_replace('<?php', 'ºººhp', $code);
$code = '<?php'.$code;
$parsedCode = Pre\Plugin\parse($code);
// Unescape <?php in the script text
$parsedCode = str_replace('ºººhp', '<?php', $parsedCode);
The alternative is changing how the macro is inserted in the dynamic code to avoid the <php as the signal to insert.