preg_replace替换.php文件中的所有文本实例

preg_replace替换.php文件中的所有文本实例,php,replace,preg-replace,str-replace,Php,Replace,Preg Replace,Str Replace,我是新来的,完全是个新手。对不起,如果这个问题太简单,我想不出最好的方法 我有很多包含各种文本占位符的.php文件。例如,在我的.php文件中,我将有如下内容: 我很喜欢xCity,想住在那里 或者一个链接 <a href="xcity_is_awesome.php"> 我想我可以在每个页面的头部使用一些php代码来进行preg_替换,将“xcity”或“xcity”的任何实例分别替换为“mycity”或“mycity” 我目前可以让它工作: < ?php $xCity

我是新来的,完全是个新手。对不起,如果这个问题太简单,我想不出最好的方法

我有很多包含各种文本占位符的.php文件。例如,在我的.php文件中,我将有如下内容:

我很喜欢xCity,想住在那里

或者一个链接

<a href="xcity_is_awesome.php">

我想我可以在每个页面的头部使用一些php代码来进行preg_替换,将“xcity”或“xcity”的任何实例分别替换为“mycity”或“mycity”

我目前可以让它工作:

< ?php
 $xCity = "Mycity"; ?>
<?php
$xCity=“我的城市”?>
只要我将文档中出现的所有“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的建议(如下所示):


然后使用echo语句交换变量:

<?php echo $xCity ?>

我似乎在使用php时遇到了一个问题,包括:

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

现在,我敢打赌有一个问题,就是有多个php“命令”像这样相互关联。这将如何处理?

$str='';
$str = '<?php echo $xCity ?>';
echo str_replace('xCity', 'Mycity',$str);
echo str_替换('xCity','Mycity',$str);
输出-

<?php echo $Mycity ?>

检查-

让我知道这是否是您想要的?

您可以使用:


包含xCity的文本
也许还有其他可以替代的东西

其优点是,您实际上不需要触摸页面本身,只需将它们包装在输出缓冲区中即可。但从长远来看,使用合适的基于php的模板系统可能会更容易维护。

您应该能够在大多数IDE的项目中进行查找和替换,使用
更改xCity。对于预编
,您可能可以在任何也允许正则表达式搜索的IDE中使用
/^/s
(或类似的东西)进行相同的预编,尽管手动将其添加到需要它的文件中可能会更容易

而不是:

<div>My city is xCity and I think xCity is the coolest city in the world. Everyone should live in xCity!</div>
我的城市是xCity,我认为xCity是世界上最酷的城市。每个人都应该生活在城市里!
使用:


我的城市是而且我认为是世界上最酷的城市。每个人都应该住在里面!

如果要使用占位符,请将它们设置为唯一的,以给它们一个边界

例如:

这样可以保护变量,如:

$xcity=”“不被替换

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

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

或者更好的方法是定义要在脚本中使用的实际PHP变量

例如,在您的文件中:


希望对您有所帮助……

谢谢您的回复!是的,我使用BBedit进行查找/替换,但我也使用dreamweaver模板。当/如果我更新模板文件,它将删除我替换的所有“变量”。我知道我可以使每个变量成为DW模板中的“可编辑”区域。。。但我相信有更好的方法吗?我没有任何使用DreamWeaver模板的经验,但是可以直接将PHP代码插入模板,而不是占位符。是的,我就是这么做的。只是将代码放入模板:)但由于是新手,我无法找到正确的编写代码的方法。如果看不到DW的输出,我想我帮不了什么忙。如果PHP代码没有正确显示在输出中,听起来可能是在转义或剥离PHP代码。啊。。。我误解了。是的,我可以用替换xcity变量的所有实例。但这是最好的方法吗?在我的html/php标记中可以有相当多的echo实例。这聪明吗?(我继承了这个网站,所以它是一个现有的网站…不是从零开始的)使用你的第一个例子,我似乎无法让它工作
我将文档中的两个变量从“xcity”更改为“{xcity}”。下面是我在php文件中的代码:当我上传文件并预览它时,php不会更改文本。我肯定我一定做错了什么事@user2509823哦,对了,用你已经尝试过的更新代码更新你的问题。啊。是的,我想这些评论部分不允许我发布代码片段。更新了原始问题:)你知道这种方法是否会减慢网页的加载速度吗?那么,放慢它的速度,以影响SEO的加载时间?
$webpage = file_get_contents('mypage.html');

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

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

echo $webpage;
<?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>
<?php
$find    = array('{{xcity}}','{{mycity}}');
$replace = array($xcity,$mycity);

$content = str_ireplace($find,$replace,$content);
?>
<?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;
}
?>
$webpage = file_get_contents('mypage.html');

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

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

echo $webpage;