2013-06-21 85 views
2

我是新來的,是一個完整的新手。對不起,如果這個問題太基本了,但我無法弄清楚最好的方法來做到這一點。preg_replace替換.php文件中的所有文本實例

我有很多包含各種文本佔位符的.php文件。例如,在我的.php文件中,我會有這樣的:

我喜歡xCity很多,並希望住在那裏。

或鏈路,

<a href="xcity_is_awesome.php"> 

我想我可以使用一些PHP代碼在每一頁的頭部做了preg_replace將取代「xcity」或「xCity」與「mycity」的任何實例或「Mycity」。

我目前得到這個工作:

< ?php 
$xCity = "Mycity"; ?> 

只要我替換「xCity」的所有出現在文檔中使用:

<?php echo $xCity ?> 

我知道有一個更聰明的辦法做到這一點,但就像我說的,我是全新的。

任何人都可以幫助我嗎?


這裏是我想現在:

使用下面的一個例子,我似乎無法得到它的工作。

我在文檔中將一些變量從「xcity」更改爲「{{xcity}}」。

,這裏是我的PHP文件代碼:

<?php 
$xCITY = "MYCITY"; 
$xcity = "mycity"; 
$find = array('{{xCITY}}','{{xcity}}'); 
$replace = array($xCity,$xcity); 
$content = str_ireplace($find,$replace,$content); 
?> 

當我上傳的文件,並預覽時,PHP不更改文本。我相信我一定在做錯事。 :)


我目前使用SpencerJ(下同)的建議:

<?php 
$xCity = "Calgary"; ?> 

然後使用echo語句來換出變量:

<?php echo $xCity ?> 

我似乎運行成php出現問題包括:

<?php include("<?php echo $xcity ?>_bottomlinks.php"); ?> 

現在,我敢打賭,有一個問題有多個PHP「命令」在這樣的對方。這將如何處理?

回答

0

您應該能夠在大多數IDE中執行查找並替換項目,以便使用<?php echo $xCity; ?>更改xCity。對於預先添加<?php $xCity = "Mycity"; ?>,您可能會在任何IDE中執行同樣的操作,該操作也允許使用/^/s(或類似的東西)進行正則表達式搜索,但可能更容易將其僅添加到需要它的文件中。

相反的:

<div>My city is xCity and I think xCity is the coolest city in the world. Everyone should live in xCity!</div> 

用途:

<?php $xCity = 'Calgary'; ?> 
<div>My city is <?php echo $xCity; ?> and I think <?php echo $xCity; ?> is the coolest city in the world. Everyone should live in <?php echo $xCity; ?>!</div> 
+0

感謝您的答覆是啊,我是用BBEdit中做一個查找/替換!,但我也使用Dreamweaver模板。何時/如果我更新模板文件,它將刪除我替換的任何「變量」。我知道我可以使每個變量都是DW模板中的「可編輯」區域......但我確定有更好的方法? – brwells

+0

我對DreamWeaver模板沒有任何經驗,但可以直接將PHP代碼插入到模板中,而不是佔位符。 – SpenserJ

+0

是的,那正是我所做的。只需將代碼放入模板:)但是,如果是新的代碼,我無法弄清楚編寫代碼的正確方法。 – brwells

0
$str = '<?php echo $xCity ?>'; 
echo str_replace('xCity', 'Mycity',$str); 

輸出 -

<?php echo $Mycity ?> 

檢查 - http://codepad.org/uVs6w3kH

讓我知道這是你在找什麼?

0

您可以使用output control functions

<?php 
$xCity = "Mycity"; 
ob_start(); // tell php you want it to buffer the output, not send it to the browser yet 
?> 
Text containing xCity 
and maybe other stuff to replace 
<?php 
// now the page is complete, get the contents (and empty the output buffer) 
$out = ob_get_clean(); 
// replace all the strings you want replaced 
... 
// and send the output to the browser 
echo $out; 
?> 

的好處是,你沒有真正接觸自己的網頁,你只是包裝他們在該輸出緩衝區。但從長遠來看,使用適當的基於PHP的模板系統可能會更容易維護。

0

如果你打算使用佔位符,使他們獨特的,給他們一個邊界

EG:<a href="{{xcity}}_is_awesome.php">

這你可以保護變量的方式如:

$xcity="";被取代。

<?php 
$find = array('{{xcity}}','{{mycity}}'); 
$replace = array($xcity,$mycity); 

$content = str_ireplace($find,$replace,$content); 
?> 

或者更好的方法是定義想要在腳本中使用的實際PHP變量。

E.G在您的文件中:<a href="<?php echo $xcity ?>_is_awesome.php">然後在調用文件/視圖時,您可以傳遞值。

<?php 
//define your values 
$data['xcity'] = "Some Value"; 
//load view and pass your variables to it 
$content = loadContentView('TheFile', $data); 


function loadContentView($view, $data=null){ 
    $path = './path/to/the/files/'.$view.'.php'; 

    if (file_exists($path) === false){ 
     die('Content view not found: '.$path); 
    } 

    /*Extract the $data passed to this function*/ 
    if($data !== null){ 
     extract($data); 
    } 

    ob_start(); 
    require($path); 
    $return = ob_get_contents(); 
    ob_end_clean(); 

    return $return; 
} 
?> 

希望它可以幫助...

+0

使用你的第一個例子,我似乎無法得到它的工作。
我在文檔中將一些變量從「xcity」更改爲「{{xcity}}」。 這裏是我在php文件中的代碼: <?php $ xCITY =「MYCITY」; $ xcity =「mycity」; $ find = array('{{xCITY}}','{{xcity}}'); $ replace = array($ xCity,$ xcity); $ content = str_ireplace($ find,$ replace,$ content); ?> 當我上傳文件並預覽它時,php不會更改文本。我相信我一定在做錯事。 :) – brwells

+0

@ user2509823哦,對,用你試過的更新代碼更新你的問題。 –

+0

啊。是的,我想這些評論部分不允許我發佈代碼片段。更新了原來的問題:) – brwells

0
$webpage = file_get_contents('mypage.html'); 

$findme = array('xcity','mycity'); 
$replace = array('mycity','Mycity'); 

$webpage = str_replace($findme,$replace,$webpage); 

echo $webpage; 
+0

你知道這種方法是否會減緩網頁的加載速度嗎?那麼,減緩它的方式來影響SEO的加載時間? – brwells

相關問題