This is an old revision of the document!
The biggest difference is in handling of entities. Entities are now unescaped before passing to expressions, i.e. ${php:strlen('"')} “sees” just the quote character and returns 1. In previous versions entities were passed as-is to the expressions (and that example would return 6).
Newly added unescaping of entities can expose encoding bugs. Make sure your pages declare document encoding:
For XHTML it's best to send Content-Type:application/xhtml+xml;charset=UTF-8 or Content-Type:text/html;charset=UTF-8 HTTP headers.
text/xml MIME type, use application/xml instead.
In HTML add appropriate <meta> tag or send Content-Type:text/html;charset=UTF-8 HTTP header.
$phptal->setEncoding('ISO-8859-…') (or just switch to UTF-8 already! :)PHPTAL_VERSION have been removed. Remove any PHPTAL-specific define()s and use class methods (available in earlier versions too) for configuration (e.g. $phptal->setPhpCodeDestination('/tmp/phptal/') for custom temp directory.)PHPTAL_DIR is gone. PHPTAL now temporarily modifies include_path (this may change in the future).PHPTAL.php.phptal:* attributes has changed from http://xml.zope.org/namespaces/phptal to http://phptal.motion-twin.com/ns/phptal.-- is not allowed in comments.) Comments starting with <!--! are stripped from output.tal:repeat doesn't “leak” variables to outer scope