If you already have these pages as dynamic content, wget them as HTML and save as static pages somewhere on your server. Serve as usual HTML. Regenerate when necessary. I just don't see a reason why you want to make them static (performance? server security policy? why only these pages?).
Your question is a little vague, but PHP can cache dynamically created pages into static ones. A very simplistic system would use output buffering to capture the dynamic contents and write them to a file. You then need to decide how to invalidate this cache (for example, by deleting the static file).
However, you should use caching only when you've encountered a specific performance problem, otherwise it just adds to the complexity of your application needlessly. You can also just cache the underperforming resource (for example database results) instead of the entire page.
If you would elaborate more on what you want to achieve, you'll get a more specific answer.
EDIT: I've reread your modified question. Your approach is incorrect - a person/web crawler requesting the page could not infer from the contents whether it was dynamically generated or not. It could try to guess from the URL format, but those can be controlled by the application. The page can be bookmarked and indexed by search engines just the same.
Caching to actual static files should be used as a optimization when generating those pages on the fly is too expensive.
Suppose you have a form that POSTs content to another php, which shows the dynamic results, but you want to be able to "share" the results with other people (therefore, converting the dynamic results to a static page.) Think GoogleDocs. This is what I want to be able to do (and how I found this thread.) So what is the best way to do this?