Substituir “? php print t ('Blabla'); ? Para ser "Blabla"

2

Digamos que em file.php , há muito texto de impressão do php: <?php print t('Blabla'); ?> , <?php print t('Text Here'); ?> , etc.

O que eu preciso é remover <?php print t(' e '); ?> do texto de impressão do php.

Então, <?php print t('Blabla'); ?> se tornará Blabla , <?php print t('Text Here'); ?> se tornará Text Here , etc.

Se um php imprimir texto em uma linha, eu acho que sei como usar sed para substituir, mas que tal se uma linha longa contiver vários textos de impressão php

Eu só quero saber como substituí-lo?

    
por apasajja 02.06.2012 / 15:18

1 resposta

3

Suponho que sua intenção é remover um antigo sistema de internacionalização de seus scripts PHP.

perl -e 'undef$/;$s=<>;$s=~s/<\?php\s+(?:print|echo)\s+t\((['"'"'"])(.*?)\);\s+\?>/$2/gs;print$s' apasajja

Isso tem algumas melhorias não feitas na pergunta:

  • Funciona para print ou echo .
  • Funciona para aspas simples e duplas.
  • Permite que as tags <?php .. ?> estejam em linhas separadas.
  • Permite que o parâmetro t () abranja várias linhas.

Mas ainda há situações suficientes em que irá falhar.

    
por 02.06.2012 / 18:01