The basic idea is to search for duplicate code, put that in a separate module/class/file and reuse it where possible. This is how you could do that:
Split the code of each application into these often used chunks:
- a view layer, the user interface. (HTML, JavaScript, CSS, Flash)
- a business logic layer, the validation checks, workflow etc. (PHP)
- a data layer, the storage and retrieval of data. (PHP, Database)
Investigate if each layer really is different from the others or can be shared. Strive for shared business logic and data layers. Ideally you create applications that basically work the same but only have a different user interface (skin).
Merge the duplicated layers into single implementations and combine them with the specific skins. So for 3 forums you have 1 data layer, 1 business logic layer and 3 UI's.
A second way of combining code might be done if each application uses different techniques for a specific layer.
You should look for ways to use the same frameworks for a layer across applications. For example you could decide to always use PDO for the data layer. That reduces the time to build the next application because you don't have to learn new techniques for each application.
You might discover that parts of the code for a layer in one application are the same in that layer in a second application. Put this code in a separate module you share across all applications.
One last suggestion, if you haven't done so yet, decide on a set of coding standards for each technique, with naming conventions, file layout, used patterns etc. That makes it easier for a developer to read and understand code written by a colleague and increases the change of finding code to reuse.