2013-08-28 74 views
4

假設我有一個包含文件foo.php,它包含文本「this file is foo」。從PHP中替換字符串包含文件

所以,當我加載包含使用<?php include 'foo.php'; ?>,我希望能夠顯示它包含的文本之前,從包括替換字符串。

所以我們假設我想用包含「cool」的包含替換「foo」。

有意義嗎?

+0

爲什麼不使用'file_get_contents()'來讀取純文本文件? –

+0

你不能編輯文件? –

回答

7

您可以使用此:

<?php 

function callback($buffer) 
{ 
    return (str_replace("foo", "cool", $buffer)); 
} 
ob_start("callback"); 
include 'foo.php'; 
ob_end_flush(); 

?> 
2

您可以下面的函數來做到這一點:

$content=includeFileContent('test.php'); 
echo str_replace('foo', 'cool', $content); 

function includeFileContent($fileName) 
{ 
    ob_start(); 
    ob_implicit_flush(false); 
    include($fileName); 
    return ob_get_clean(); 
} 
0

的基本想法是好的,使用的實施辦法是沒有的。 Include用於在整個內存中加載文件。只有當您不想更改包含文件中的任何內容時,才應該使用'include ...'。使用include可以將文件加載到內存中,並打算用它來處理下一個任務。

動態包含一個經典示例是模板文件。 include_once的一個典型例子是具有基本功能的文件。

順便說一句,我更喜歡require_once以上include_once。

如果您想在顯示文件之前更改文件的內容,應該在另一個函數中加載文件的內容並在顯示文件之前替換它的內容。執行內容更改的功能應位於您包含的文件中(_once)。 應該使用某種類型的文件處理程序加載應該替換內容的文件。因爲你想替換文本,我建議使用file_get_contents()。 foo.php的

<?php 
    include 'foo.php'; 

    $output = file_get_contents('bar.php'); 
    $output = processContent($output); 
?> 

例子:

<?php 
    function processContent($pText){ 
    return str_replace('foo','cool',$pText); 
    } 
?> 

使用這種技術可以幫助你分開實際輸出語義,可以是一個很好的技術,在運行時返回個性化的信息。

相關問題