所以这个问题适用于很多语言,所以不要因为我在终端中使用PHP而感到困惑。Python或Perl的答案可能也会给出我需要知道的内容。
所以我正在阅读一个文本文件,我想知道每一行都包含哪些特殊字符。例如,如果文本文件是这样的:
hello
world
我希望脚本输出"hellonworld"
。我的根本问题是,我正试图编写一个涉及从文本文件中读取的PHP脚本,但我希望它忽略空白行,但无论我尝试什么,它仍然读取空白行。我想这是因为我没有为这行输入正确的匹配项,所以我试图弄清楚空白行是如何存在的,我不确定它是否是"n" or "tt"
等。
只需像这样做普通的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
它提出:
hellonworld
我假设"特殊字符"是指仅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
。这样就不需要检查字符的双字符了。