【问题标题】:Delete specific characters in text-file php删除文本文件php中的特定字符
【发布时间】:2013-05-19 21:10:07
【问题描述】:

我有这样的文字:

 # GEMEL
 Eclipse:        ,frank,jean
 accueil:        ,eclipse,alex
 accueil:        eclipse,truc

我想删除frank or eclipse前面的,,可以是任意字。

我的想法是检查在 Eclipse: 或 accueil: 之前是否有逗号,如果有的话,我们只删除逗号:

 # GEMEL
 Eclipse:        frank,jean
 accueil:        eclipse,alex
 accueil:        eclipse,truc

但是如果她存在,我们怎么能只删除一个逗号呢?

我用 : 来创建这条线

if($fd = file($filename)){

    //1- on recupere les données transmise
    $data = fgets(STDIN);
    $chaine2 = explode(",", $data);
    $chaine = $chaine2[0];
    $user = ",".$chaine2[1]."\n";

    //var_dump($fd);
    foreach ($fd as $key => $value) {
        if(preg_match('/'.$chaine.'/', $value)){
            $fd[$key] = rtrim($value, "\n\r").$user;
        }
    }
    file_put_contents($filename, $fd);
}

【问题讨论】:

  • 该行之后:$fd[$key] = rtrim($value, "\n\r").$user; 使用 preg_replace 删除该逗号并更新 $fd[$key] 行。

标签: php preg-replace text-files special-characters comma


【解决方案1】:
$data = file_get_contents($filename);
$data = preg_replace('/(:\s*),/', '$1', $data);
file_put_contents($filename, $data);

正则表达式匹配从:, 的所有内容。带括号的组匹配逗号之前的部分。所以我们将其替换为$,这样我们就可以保留除逗号之外的所有内容。

【讨论】:

  • 谢谢!你让我开心,$1 的意义是什么,为什么不是 ''
  • $1 是子模式的第一个匹配项。
【解决方案2】:
if ($fd = file($filename)) {
    foreach ($fd as $key => $value) {
        $fd[$key] = preg_replace('/(\s+),/', '$1', $value));
    }
    file_put_contents($filename, $fd);
}

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多