Not sure if the Last-Modified will work like you expect. From the RFC:
The exact meaning of this header field depends on the implementation of the origin server and the nature of the original resource. For files, it may be just the file system last-modified time. For entities with dynamically included parts, it may be the most recent of the set of last-modify times for its component parts. For database gateways, it may be the last-update time stamp of the record. For virtual objects, it may be the last time the internal state changed.
My interpretation of the spec would lead me to set the Last-Modified header to the current date/time for dynamically generated content (ie: PHP pages). The server hosting the page really has no idea when the content being built was actually last updated (some of the data came from one database server other from another, neither records have a field to indicate update time, etc..). It could use the filesystem time for the PHP file itself but this might not change for months on end while the content rendered changed every reload. I see no way the server/interpretor could figure this out without guidance from the developer as to which value to use.
So unfortunately I think your best option is to analyze the page content itself like other have suggested but this will not be easy to accurately identify because of the dymanic content aspects.