Kurulum:
Ben iki, başlık (header.php) için bir ve altbilgi (footer.php) için bir tane içeren içeren bir standart. Php dosyası (index.php) var. Index.php dosyası gibi görünüyor:
index.php
<?php
include header.php;
?>
<h2>Hello</h2>
<p class="editable">Lorem ipsum dolar doo dah day</p>
<?php
include footer.php;
?>
Bu gibi header.php:
<html>
<head>
<title>This is my page</title>
</head>
<body>
<h1 class="editable">My Website rocks</h1>
. ve altbilgi bu gibi php:
<p>The end of my page</p>
</body>
Ben bir sayfada ". Düzenlenebilir" öğelerin herhangi bir düzenleme için olanak sağlayan bir PHP komut dosyası yazıyorum. Benim sorunum bu düzenlenebilir bölgelerin herhangi içerdiği dosyaların görünür yanı sıra ana gövde index.php olmasıdır.
Benim php kodu) file_get_contents (ile index.php dosyasını kapma; hangi iyi çalışıyor. Ben de index.php herhangi bir ". Düzenlenebilir" bölgeleri düzenlemek ve kaydetmek mümkün.
Benim sorun:
Ben içeren "bulma" bir yol bulmak ve ". Düzenlenebilir" bölgelerinde için de bu ayrıştırmak mümkün olmuştur. Ben ile ben nasıl olacağı konusunda önerileri arıyorum tüm index.php var - düzenlenebilir bölgeler için onları kontrol. Ben "* içerir. Php" bulmak için normal ifadeler kullanmak gerekir? Hatta nereden başlayacağınızı emin değilim ...
O sizin için kim benim PHP kodu görmek isteyebilirsiniz. Ben PHP sınıfının kullanımı yapıyorum: [link text] [1] benim gibi kod yazmak için izin veren:
// 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);
[1]: http://simplehtmldom.sourceforge.net/manual_api.htm simple php dom parser
UPDATE
Ben denemek ve içerir maç için düzenli ifadeler ile oynamak olmuştur. Ben regex oldukça çöp değilim ama ben yakın alıyorum düşünüyorum. İşte ben bugüne kadar ne var:
$findinclude = '/(?:include|include_once|require|require_once)\s*(?:[a-z]|"|\(|\)|\'|_|\.|\s|\/)*(?=(?:[^\<\?]|[^\?\>])*\?>)/i';
Bu garip dönmek gibi görünüyor olmasına rağmen oldukça iyi maçları) ve 'kullanılarak preg_match. Ben sadece php etiketleri arasında eşleşmesini sağlamak için regex güvenlik biraz eklemek için çalışıyorum - bu bölümü: (= (:?? [^ \ \] | [? ^ \>]) * \> ) - ama sadece ilk sayfada bulunmaktadır döndürür. Bu düzenli ifade nasıl geliştirileceği konusunda herhangi bir ipucu? (Ben yaklaşık 6 saat boyunca ona olmuştur)