Tornando um texto simples do processo de script PHP em um pipe

0

Na semana passada, quis converter alguns caracteres chineses simplificados em tradicionais. Eu encontrei um enganosamente bom olhar shell one-liner , que hoje eu descobri foi 20% propensas a erros.

Então eu fiz algumas pesquisas. A base de código do mediawiki contém tabelas de conversão que levam em consideração a natureza idiossincrática da ortografia simplificada, e alguém já escreveu uma biblioteca de ajuda legal cheia de classes e funções fictícias, chamada mediawiki-zhconverter. Então, parecia que eu poderia ter meu one-liner, que eu preferiria ser algo parecido com isto, stconvert sendo o nome do script que estou escrevendo:

$cat simplifiedstory | stconvert > traditionalstory

No entanto, o mediawiki é inteiramente PHP, e eu nunca escrevi nenhum PHP, então não sei como ele lida com as variáveis do shell. Como você pode ver abaixo, simplesmente colocar '$ argv' onde uma string iria não atinge meu objetivo.

#!/usr/bin/php
<?php

define("MEDIAWIKI_PATH", "/home/a1/mediawiki-1.13.0/");
require_once "mediawiki-zhconverter.inc.php";
echo MediaWikiZhConverter::convert($argv, "zh-tw") , ",";

?>
    
por ixtmixilix 02.11.2011 / 17:16

1 resposta

2

Você quase teve. $ argv é uma matriz, semelhante ao perl. $ argv [0] é o próprio script, como $ 0 no shell, ou $ ARGV [0] no perl. $ argv [1] seria o primeiro argumento passado para o script, mas seu uso provavelmente mudaria desde que você pode fazer o gato no seu script php. Supondo que o seu script php é stconvert , o uso seria agora stconvert simplifiedstory > traditionalstory .

#!/usr/bin/php
<?php

define("MEDIAWIKI_PATH", "/home/a1/mediawiki-1.13.0/");
require_once "mediawiki-zhconverter.inc.php";

$text = shell_exec("cat $argv[1]");
echo MediaWikiZhConverter::convert($text, "zh-tw") , ",";

?>
    
por 02.11.2011 / 18:09