无法str_replace html标记[重复]

问题描述 投票:0回答:1

[我遇到一个问题,我尝试用字符串替换php include(我的菜单)中的一行-并且它擦除了整个menu.php文件而不是指定的一个标签。

menu.php


<?php
echo'     <A class="btn btn-small btn-info" href="Home.php">Home</A> 
          <A class="btn btn-small btn-info" href="Content.php">Content</A> 
          <A class="btn btn-small btn-info" href="Streaming.php">Streaming</A>
          <A class="btn btn-small btn-info" href="Audio.php">Audio</A> 
          <A class="btn btn-small btn-info" href="Power.php">Power</A>
          <A class="btn btn-small btn-info" href="STL.php">STL</A>  
          <A class="btn btn-small btn-info" href="Axia.php">Axia</A>
          <A class="btn btn-small btn-info" href="Codecs.php">Codecs</A>
          <A class="btn btn-small btn-info" href="Office.php">Office</A>
          <A class="btn btn-small btn-info" href="Cameras.php">Cameras</A>
          <A class="btn btn-small btn-info" href="Other.php">Other</A>
?>  

和之前已定义$ page的删除php

$remove_item = '<A class="btn btn-small btn-info" href="'.$page.'.php">'.$page.'</A>';
$file = fopen("/Includes/menu.php", 'w+');
$menu = file_get_contents($file);
$menu_new = str_replace($remove_item, '', $menu);
fwrite($file, $menu_new);
fclose($file);

我确定这一定是我正在做的基本的和愚蠢的,或者更确切地说是-不做的。

非常感谢您的帮助

php string replace str-replace
1个回答
0
投票

第一个错误是使用file_get_content读取使用fopen打开的流。这肯定会失败,并且file_get_contents还将以txt的形式读取php,并且不会进行处理,因此您将收到

PHP.net file_get_contents

第二,以'W +'模式打开,在'menu.php'上将内容截断为空,如果您想读取实际内容,则必须使用'R +',但是它也以txt的形式读取内容,但是使用fread代替的file_get_content

PHP.net fopen

PHP.net fread

我建议使用include而不是读取文件的内容,从而允许服务器处理其中的php代码

PHP.net include

include('menu.php');

和在menu.php内部

$menu='        <A class="btn btn-small btn-info" href="Home.php">Home</A> 
    <A class="btn btn-small btn-info" href="Content.php">Content</A> 
    <A class="btn btn-small btn-info" href="Streaming.php">Streaming</A>
    <A class="btn btn-small btn-info" href="Audio.php">Audio</A> 
    <A class="btn btn-small btn-info" href="Power.php">Power</A>
    <A class="btn btn-small btn-info" href="STL.php">STL</A>  
    <A class="btn btn-small btn-info" href="Axia.php">Axia</A>
    <A class="btn btn-small btn-info" href="Codecs.php">Codecs</A>
    <A class="btn btn-small btn-info" href="Office.php">Office</A>
    <A class="btn btn-small btn-info" href="Cameras.php">Cameras</A>
    <A class="btn btn-small btn-info" href="Other.php">Other</A>';

然后您可以执行替换

© www.soinside.com 2019 - 2024. All rights reserved.