0

次のphpスクリプトが必要だとしましょう:

$str = "be43f751d380a70d13287006a5f7795a";
$arr = str_split($str, 2);
$strT = implode("", substr_replace($arr ,"",-1));
printf('%s:%s' . PHP_EOL, $str, $strT);

出力:be43f751d380a70d13287006a5f7795a:b4f5d8a01270af75

これは単一の文字列で機能しますが、これを複数の文字列に適用したい場合はどうすればよいですか? 行末を持つ複数の文字列を持つファイル:

cat strings.txt
dc7380f92396b65be0c9dc2fda593acc
e5a391e5b84ebcd51dc467de52f88558
4ec7814976d12b40638fbe311856f84f

望ましい出力:

dc7380f92396b65be0c9dc2fda593acc:d78f29b5ecd2d53c
e5a391e5b84ebcd51dc467de52f88558:ea9eb4bd1c6d5f85
4ec7814976d12b40638fbe311856f84f:4c847d2468b315f4

コマンドラインでファイル自体を指定できれば素晴らしいでしょう。

php script.php strings.txt > trimmed.txt

ありがとうございました!

4

2 に答える 2

1

ええと、php のマニュアルを読むこともお勧めしますが、foreach ではなく file() 関数を読むことをお勧めします。これは次のように実行できます。

<?php
foreach(file($argv[0]) as $line)
{
    $arr = str_split($line, 2);
    $strT = implode("", substr_replace($arr ,"",-1));
    printf('%s:%s' . PHP_EOL, $str, $strT);
}
于 2012-05-07T18:48:45.210 に答える
0

コマンド ライン ソリューションの場合は、次のコマンドを実行します。

while read str; do php -f myfun.php $str; done < strings.txt

ここで、myfun.php は次の PHP スクリプトです。

$arr = str_split($argv[1], 2);
$strT = implode("", substr_replace($arr ,"",-1));
printf('%s:%s' . PHP_EOL, $argv[1], $strT);
于 2012-05-07T21:51:33.913 に答える