CLI PHP脚本-显示转义/格式化字符


CLI PHP Script - Show escaped/formatting characters

所以这个问题适用于很多语言,所以不要因为我在终端中使用PHP而感到困惑。Python或Perl的答案可能也会给出我需要知道的内容。

所以我正在阅读一个文本文件,我想知道每一行都包含哪些特殊字符。例如,如果文本文件是这样的:

hello
world

我希望脚本输出"hello'nworld"。我的根本问题是,我正试图编写一个涉及从文本文件中读取的PHP脚本,但我希望它忽略空白行,但无论我尝试什么,它仍然读取空白行。我想这是因为我没有为这行输入正确的匹配项,所以我试图弄清楚空白行是如何存在的,我不确定它是否是"'n" or "'t't"等。

只需像这样做普通的str_replace()

$text = str_replace( array("'n","'r"), array(''n', ''r'), $text);

我的解决方案,当然更乏味,会删除空行,CLI PHP脚本需要Shebang在头:

#!/usr/bin/php
<?php
//
// main test:
//
$xarr = file("MyFilename.txt");
$n = count($xarr);
$strret = "";
for($i = 0; $i < $n; $i++)
{
    //
    // ignore blank lines:
    //
    if(! preg_match("/^$/", $xarr[$i]))
    {
      if($i > 0)
      {
        $strret .= "''n";
      }
      $strret .= rtrim($xarr[$i]);
    }
}
//
echo $strret . "'n";
?>

使用文本文件:

# cat MyFilename.txt
hello
world

它提出:

hello'nworld

我假设"特殊字符"是指'n't'r

文本文件:

hello
world
foo
bar!
baz_

PHP:

$fp = fopen('textfile.txt', 'r');
while (!feof($fp)) {
    $c = fgetc($fp);
    if ($c == "'n") $c = ''n';
    else if ($c == "'t") $c = ''t';
    else if ($c == "'r") $c = ''r';
    echo $c;
}

上面的脚本基本上要做的是读取文件中的每个字符,并替换它找到的任何出现的't'r'n。这样就不需要检查字符的双字符了。