【问题标题】:fwrite and hiding symbols [closed]fwrite和隐藏符号[关闭]
【发布时间】:2013-05-23 06:50:46
【问题描述】:

我有一个用于编辑 .txt 文件的应用程序。它打开选定的文件,写入文件并关闭文件。每个需要编辑的文件都有特殊字符 例如[, ', =, _, ;.` 无需编辑,因此在打开文件时它们不会显示在网页上。在这些特殊字符之间存在文本,这就是将要编辑的部分。我想要实现的是,当文件打开时,特殊租船人将被隐藏,文件中的字母只被显示,这就是我想要的扭曲实现的是当文件被保存时,特殊租船人将仍然在文件中,并且在原始位置编辑过的文本。文件中的所有内容都是这样的

['text'] = ['some_,more_text']

目前我正在玩explode(); 函数和str_replace() 函数 但到目前为止,我只能删除特殊承租人,并且在保存文件时,字符不会与被删除的文本一起保存。

是否有一些我聚集的功能或方法可以实现我针对任何重播的结果,非常感谢

我仍在阅读 php 手册,但无法从 explode()str_replace(). 找到与我需要的 appart 相近的任何内容

这是我用来打开文件的代码:

$fileHandle = fopen($relPath, 'r') or die("Failed to open file $relPath go and make me a sandwich! ");

echo '<form action="updatefile.php" method="post">';

while(!feof($fileHandle))
    {
    $line = fgets($fileHandle);
    $lineArr = explode('=', $line);

    if (count($lineArr) !=2){

       continue;
    }
    $part1 = trim($lineArr[0]);
    $part2 = trim($lineArr[1]);

    //$simbols = array("$", "[", "]", "'", ";");

  //echo "<pre>$part1 $part2</pre>";

           echo '<pre><input type="text" name="content_prt1[]" size="50" value="' .str_replace($simbols, "",$part1).'"> <input type="text" name="content_prt2[]" size="50" value="' .str_replace($simbols, "",$part2).'"></pre>';
    }
    echo '<input type="submit" value="Submit" name="submit1">';
    echo '<form />';

  fclose($fileHandle) or die ("Error closing file!");

这是写入文件的:

if(isset($_POST['submit1'])){
    ini_set('auto_detect_line_endings', TRUE);

    $file = "test_file_1.php";

    if(is_file($file))
    {
        $handle = fopen($file, "w") or die ("Error opening file! {$file}");
    }
    else
    {
        die($file . ' Dose Not Exist!');
    }

    $content_prt1 = $_POST['content_prt1'];
    $content_prt2 = $_POST['content_prt2'];

    $data = '';

    foreach ($content_prt1 as $key => $value) {
        $data .= $value . " = ". $content_prt2[$key]. PHP_EOL;
    }

    //$file_contents = $_POST["content_prt1" . "content_prt1"];

    fwrite($handle, $data) or die ("Error writing to file {$file}!");
    fclose($handle) or die("Error closing file!");

     header( 'Location:../index.php' ) ;

}

【问题讨论】:

  • 所以,为了得到这个直...文件包含foo ['bar'] baz,您将其显示为“foo bar baz”,用户将其编辑为“42 glob bar bar”,您想要保存42 glob ['bar'] bar?还是42 glob ['bar'] ['bar']
  • 我想要的是 42 glob ['bar'] bar 文件的结构不应该只改变文件中的文本。
  • @deceze 如果简单地说,我认为 OP 需要某种 FileWriter 类。像 ini 文件读取器/写入器。
  • preg_replace,但你需要展示一些更接近你正在寻找的东西,以获得一个体面的答案。
  • 我可以用explode 和str replace 发布我拥有的代码,但它的玩笑非常基本,我还是把它贴出来给我2 秒

标签: php fwrite comma brackets


【解决方案1】:

您不会找到执行此操作的函数或类。 您尝试归档的内容比看起来要复杂得多。

假设您以just+a=sample 开头并显示just a sample

用户把这个改成what 特殊字符应该放在哪里?

+what=+=whatwhat+= 都是有效的解决方案。

您有三个选择:

  1. 使用许多小的文本区域(
  2. 使用 javascript 创建您自己的“textare”并跟踪用户光标位置(非常非常糟糕的主意
  3. 创建一个复杂且容易出错的逻辑来比较编辑前后的字符串

通常我讨厌人们发布“不要这样做”的答案,但我认为没有机会通过合理的努力来解决这个问题。

祝你好运,我希望你能找到解决方案或不同的方法。

【讨论】:

  • Tnx 为帖子。你描述它的方式似乎很复杂,这比我想象的要难,我想我会做更多的研究。我希望用一个简单的功能很好地解决这个问题:)
猜你喜欢
  • 2012-07-06
  • 2021-05-09
  • 2013-03-05
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 2012-01-12
相关资源
最近更新 更多