Regular expressions for Yii::t


I am trying to implement a small tool in my site so i can search for all Yii::t and write them into the corresponding files in the messages folder. But I have some problems with my expression.

preg_match_all("/Yii[:]{2}t\(['|\"](.+?)['|\"],[\s]+['|\"](.+?)['|\"].*\)/im", $content, $matches, PREG_SET_ORDER);

It finds something like:


Yii::t('User', 'User deleted')


but here are my problems:

  • It does not find [font=“Courier New”]Yii::t(‘User’, ‘add add[color="#ff0000"]"[/color]asdasd’)[/font][font=“Arial”] I don’t know how to exclude the quote which is not around the string. [/font][font="‘Courier New"]"/Yii[:]{2}t\([’(.+?)’|\"(.+?)\"],[\s]+[’(.+?)’|\"(.+?)\"].*\)/im"[/font][font=“Arial”] does not work…[/font]
  • [font=“Arial”]It does not find the translations with parameters. For example [/font][font=“Courier New”]Yii::t(‘User’, ‘add {gbf}’, array(’{gbf}’ => 1))[/font][font=“Arial”].[/font]


I think this would be a quite useful tool, but regular expressions are something i will never learn:(


Ok probably i had to search for an existing solution instead of creating my own…In this topic were at least two working solutions.