2016-06-21 1 views
2

Linuxの背景には、これに慣れてきたいわゆるonelinersがあります。今日私はコアのPHPからhtml_entity_decodeでHTMLゴミ(エンティティ)をプレーンテキストに変換したいと考えています。標準入力の各行に対してPHP関数を実行するにはどうすればよいですか?

通訳の助けによると、これは-Rオプションで行うことができます

>> html_entity_decode('>') 
'>' 

使い方:PHP [オプション] [-f] [ - ] [引数...] (...) -R <コード>すべての入力ライン のための実行PHP <コード>(。 ..)

しかし、私は多くの場合、PHPが素晴らしいと思うとき、それは私にそうでないと考える理由を与える(態度を赦す)。

seq 10 | php -R 'echo fgets(STDIN);' 
2 
4 
6 
8 
10 

...多くの場合、問題を述べると解決策につながります。だから私はこの質問を書いている間に問題を理解しました。 PHPは終了時に開いているファイルハンドルを閉じて(freeing resources参照)、!誘惑実装の詳細のために、2行目毎にスローされます。読書のための

おかげで、あなたはいつもゴルフ私の解決策あなたは変数がメインとしてスコープの外に出るため、ファイルを閉じるに関する部分が自動的にポップされると推測されるハンドル...


好きなことができるかどうか実行スタックから。私はこれをphp.netで見つけていません。

+0

あなたは私がすご腕-話すに変換/言い直すことができ –

+0

@Dagonを求めているか全くわかりませんか? –

+0

私は英語のために解決する –

答えて

2

標準を開いたままにし、すべての行を1つのスクリプト(iircと同様のPerlオンライナーと同じように)で読み込みます。

wget https://www.mountaingoatsoftware.com/agile/user-stories -O- | 
    html2text -nobs -style pretty -width 120 | 
    php -r 'while ($ii = fgets(STDIN)) 
       echo html_entity_decode($ii);' 

Hooray!

+0

もちろん、utf8_encode(fgets(STDIN))が必要です –

関連する問題