2015-09-21 77 views
2

簡潔明瞭。我不擅長正則表達式,因爲我從來沒有理解它。但是,當你看看這個簡單的模板,你會說這是可能取代%% +它與PHP的括號中的內容+添加功能括號這樣的:用php函數替換模板中的佔位符

模板:

<html> 
<head> 
    <title>%getTitle%</title> 
</head> 
<body> 
    <div class='mainStream'> 
     %getLatestPostsByDate% 
    </div> 
</body> 
</html> 

它應該將其替換爲:

<html> 
<head> 
    <title><?php getTitle();?></title> 
</head> 
<body> 
    <div class='mainStream'> 
     <?php getLatestPostsByDate();?> 
    </div> 
</body> 
</html> 

這可能嗎?如果是,如何?如果有人獲得了一個很好的教程,即使不是那麼聰明的人,也可以解釋它,我會很感激。

在此先感謝。

+1

您可以使用str_replace函數 –

+1

使用str_replace()函數 –

+3

'我不擅長的正則表達式,因爲我永遠無法理解it.'我不喜歡這句話....也許你的意思'因爲我懶學習它。「? – Kent

回答

2

這可能是一個良好的開端。獲取您的自定義標記(%%)之間的所有內容,並用php代碼替換它。

https://regex101.com/r/aC2hJ3/1

正則表達式:/%(\w*?)%/g。檢查右側(頂部)的正則表達式的解釋和生成的代碼...它應該有所幫助。

$template=file_get_contents('template.php'); 

    $re = "/%(\\w*?)%/"; 

    $subst = "<?php $1(); ?>"; 

    $result = preg_replace($re, $subst, $template); 

file_put_contents('template.php',$result); 
+0

老兄,我愛你:>這對我來說似乎是最好的解決方案,不像其他答案不好,他們也很好,但你的是我最好的解釋。非常感謝你。只是爲了更動態的部分,而不是file_put_contents我使用一個技巧來不操作模板 - > eval('?>'。$ result。'<?php'); 關於 – denii

+0

Np,很樂意幫忙。 :) regex101可能是學習和練習正則表達式的最佳在線資源之一,有時甚至是現成的解決問題的解決方案。 :) – sinisake

1

試試這個

$html = str_replace ('%getLatestPostsByDate%', '<?php getLatestPostsByDate();?>', $html); 

但如果你正在尋找一個通用的解決方案,那麼你必須使用正則表達式