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

时间:2013-06-21 17:24:32

标签: php replace preg-replace str-replace

我是新来的,也是一个完整的新手。很抱歉,如果这个问题太基础,但我无法找到最佳方法。

我有很多包含各种文本占位符的.php文件。例如,在我的.php文件中,我会有这样的东西:

我非常喜欢xCity,并希望住在那里。

或链接,

<a href="xcity_is_awesome.php">

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

我现在可以开始工作了:

< ?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 include("<?php echo $xcity ?>_bottomlinks.php"); ?>

现在,我打赌有一个问题,就像这样在彼此中有多个php“命令”。这将如何处理?

5 个答案:

答案 0 :(得分:0)

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

输出 -

<?php echo $Mycity ?>

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

请告诉我这是否是您要找的?

答案 1 :(得分: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的模板系统将更容易维护。

答案 2 :(得分: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>

答案 3 :(得分: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;
}
?>

希望它有所帮助...

答案 4 :(得分:0)

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

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

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

echo $webpage;