On 11/15/05, Greg Donald <[EMAIL PROTECTED]> wrote:
> On Tue, 15 Nov 2005, Jim Moseby wrote:
>
> >> for file in *.php; do
> >> cp $file $file.tmp
> >> sed -e "s/<?$/<?php/g" $file.tmp >$file
> >> rm $file.tmp
> >> done
> >
> > I maintain: "Better to save the grief and do it right to start with, no?"
>
> Maybe at some point I too will be lucky enough to only work on code that
> I authored.
>
> for file in *.php; do
> cp $file $file.tmp
> php -r 'echo preg_replace("/<\?php=\s*/i","<?php echo
> ",preg_replace("/<\?(?!php)/i","<?php",file_get_contents($argv[1])));'
> $file.tmp >$file
> rm $file.tmp
> done

I'd be inclined to do it with the tokenizer functions with something
like this (untested):

<?php

$source = file_get_contents($argv[1]);
$token = token_get_all($source);

foreach ($token as $t) {
  if (is_string($t)) {
    print $t;
    continue;
  }

  switch ($t[0]) {
  case T_OPEN_TAG_WITH_ECHO:
    print '<?php echo ';
    break;
  case T_OPEN_TAG:
    print '<?php ';
    break;
  case T_CLOSE_TAG:
    print ' ?>';
    break;
  default:
    print $t[1];
  }
}

?>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to