Saving a .php file and saving the includes too (possibly)

wyllomoon

New Member
The setup:I have a standard .php file (index.php) that contains two includes, one for header (header.php) and one for footer (footer.php). The index.php file looks like this:index.php\[code\]<?phpinclude header.php;?><h2>Hello</h2><p class="editable">Lorem ipsum dolar doo dah day</p><?phpinclude footer.php;?>\[/code\]header.php like this:\[code\]<html><head><title>This is my page</title></head><body><h1 class="editable">My Website rocks</h1>\[/code\]and footer .php like this:\[code\]<p>The end of my page</p></body>\[/code\]I am writing a PHP script that allows you to edit any of the ".editable" items on a page. My problem is that these editable regions could appear in any included files as well as the main body of index.php. My php code is grabbing the index.php file with file_get_contents(); which works well. I am also able to edit and save any ".editable" regions in index.php. My issue:I have been unable to find a way of "finding" the includes and parse through those for ".editable" regions as well. I am looking for suggestions on how I would work through all the includes in index.php - checking them for editable regions. Would I need to use regular expressions to find "include *.php"? I am unsure of where to even start... For those of you who may wish to see my PHP code. I am making use of the PHP class: [link text][1] which allows me to write code like:\[code\]// load the class and file$html = new simple_html_dom();$html->load_file("index.php");// find the first editable area and change its content to "edited" $html->find('*[class*=editable]', 0)->innertext = "Edited";// save the file$html->save(index.php);\[/code\][1]: http://simplehtmldom.sourceforge.net/manual_api.htm simple php dom parserUPDATE I have been playing around with regular expressions to try and match the includes. I am pretty rubbish at regex but I think I am getting close. Here is what I have so far:\[code\]$findinclude = '/(?:include|include_once|require|require_once)\s*(?:[a-z]|"|\(|\)|\'|_|\.|\s|\/)*(?=(?:[^\<\?]|[^\?\>])*\?>)/i';\[/code\]This matches fairly well although it does seem to return the odd ) and ' when using preg_match. I am trying to add a bit of security into the regex to ensure it only matches between php tags - this part: (?=(?:[^\<\?]|[^\?>])*\?>) - but it only returns the first include on a page. Any tips on how to improve this regular expression? (I have been at it for about 6 hours)
 
Back
Top