我在我的HTML文件正則表達式來解析模板塊HTML
<!-- BEGIN user_details -->
<h1>{firstname} {lastname}</h1>
<!-- FINISH user_details -->
user_details
以上下列嵌段是含有像這樣的數據的數組:
$user_details = array(
0 => array('firstname' => 'Hercules', 'lastname' => 'Zeus'),
1 => array('firstname' => 'Jesus', 'lastname' => 'Christ'),
2 => array('firstname' => 'John', 'lastname' => 'Smith'),
3 => array('firstname' => 'Goerge', 'lastname' => 'Bush')
);
存在與其他塊不同的BEGIN/FINSIH數組名稱和不同的{元素}所以,我需要一個正則表達式,它將遍歷整個文件並查找像這樣的塊,然後遍歷每個值並將其替換爲實際值...
我最後的輸出應該是:
<!-- user_details -->
<h1>Hercules Zeus</h1>
<h1>Jesus Christ</h1>
<h1>John Smith</h1>
<h1>George Bush</h1>
<!-- /userdetails -->
的<h1>…</h1>
標籤是不固定的,在一些塊我用<li></li>
等
我現在有這樣的代碼:
$search_in = file_get_contents('path/to/my/html/file/');
$search_for = "#<!-- BEGIN (.*?) -->(.+?)<!-- FINISH (.*?) -->#si";
if (!preg_match($search_for, $search_in, $return)) {
return NULL;
}
$return = preg_replace("#<!-- BEGIN (.*?) -->", "", $return[0]);
$return = preg_replace("<!-- FINISH (.*?) -->#si", "", $return);
return var_dump($return);
//Look for anything enclosed in curly brackes like so {something}
if(!preg_match_all("/{([^}]*)}/", $search_in, $matches)) {
return NULL;
}
//Return all occurrences of {something} in an array for use later
foreach($matches[0] as $value) {
$_args[] = $value;
}
但第一個不是var_dump
的任何數據,只有NULL
,而且我知道上面的所有內容都是有效的數據。我得到這些錯誤:
Notice: Undefined index: firstname in /home/content/v/i/r... on line 96 Notice: Undefined index: lastname in /home/content/v/i/r... on line 96
我不想使用像codeIgniter,cakePHP,Zend或類似的框架。
如果可能,請勿使用正則表達式。當然,有一個HTML解析庫,可以通過元素進行導航。 – user2864740
此外,user2864740,我自定義了我的塊,所以我需要知道自己該怎麼做,而我對DDM,smarty或類似項目不感興趣,他們的文件太大我只需要幾個函數 – JiggaJitsu
我的意思是DOM上面不是DDM – JiggaJitsu