所以这个问题适用于很多语言,所以不要因为我在终端中使用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
。这样就不需要检查字符的双字符了。