2013-11-06 2 views
0

Тема Текст:Regular заменить explression

$types[CNT_ANONS] = t('Announcement', 'content_type'); 

мне нужна найти и заменить выражение для того, чтобы получить результат:

$types[CNT_ANONS] = Yii::t('content_type', 'Announcement'); 

Таким образом, "т" заменяется "Yii :: т" и аргументы функции должны быть наоборот.

Примечание: выражения должны быть в синтаксисе «perl» (я использую его в возвышенном текстовом редакторе). И будьте уверены, что «Yii :: t» может возникнуть в тематическом тексте.

+2

Можете ли вы показать [то, что вы уже пробовали] (http://whathaveyoutried.com) до сих пор и почему его не работает? – zzzzBov

+1

Можете ли вы указать, какой язык вы используете? – m0skit0

+0

find: "t \ (('\ w +'), \ s ('\ w +')" – bora89

ответ

-1

Вы можете попробовать

Search : t\('([^']+)',\s'([^']+)'\); 
Replace: Yii::t('\2', '\1'); 
+0

Спасибо, это очень близко к моему один, но то, что в тексте, будет таково: t ('update {lang} version', 'form_model', array ('{lang}' => $ rec-> lang)) Как сказать «что угодно» внутри строк , цель просто заменить их наоборот – bora89

+0

Я обновил свой ответ. Мы смотрим что угодно, но «до следующего» – timmalos

+0

Briliant! Это то, что я искал, но последний вопрос оставлен. Чтобы не совпадать «Yii :: t «мы разместили первое пространство, но оно могло отсутствовать: $ email-> message = t (« Ваш новый пароль »,« пользователь »). Другими словами, следующие элементы не должны совпадать: $ this-> guestName = Yii :: t ('user', 'Guest'); subject ('string1', 'string2'); – bora89

-1

Try:

$data = '$types[CNT_ANONS] = t(\'Announcement\', \'content_type\');'; 
$res = preg_replace('@\$([^\s]+?)(\s+?)=(\s+?)t\((\'|")(.+?)(\'|"),(\s*?)(\'|")(.+?)(\'|")(.*?)\);@sim', "\$$1$2=$3Yii::t($8$9$10, $4$5$6$11);", $data); 
//     ^_______________^----finding var 
//            ^________________^----first argument  
//                  ^________________^----second argument  
+0

Я обновляю решение с совместимостью третьего и следующих аргументов – CreatoR

+0

отлично работает с '$ data = '$ types [CNT_ANONS] = t (\' update {lang} version \ ', \' form_model \ ', array (\ '{lang} \' => $ rec-> lang)); '; ' – CreatoR

Смежные вопросы