#php #regex #po #mo
#php #регулярное выражение #по #мо
Вопрос:
я пытаюсь сделать .просматривая файлы из моих исходных текстов на php, находя вызовы функций «t ()», я знаю, что лучший способ — использовать функции регулярных выражений, такие как preg_match или что-то в этом роде, но я не умею создавать регулярные выражения, любая помощь?
(и извините за мой английский …)
Комментарии:
1. Пожалуйста, приведите несколько примеров ввода и четко укажите, какие подстроки вы пытаетесь сопоставить.
2. @Bart: Я полагаю, автор хочет сгенерировать файлы .mo так, как сгенерировано gettext.
t()
Функция, вероятно, эквивалентна_()
функции gettext. Автору необходимо найти все эти вызовы функций, чтобы получить непереведенные исходные строки.3. @Sander, это именно то, что вы сказали, спасибо
Ответ №1:
Нет, preg_match
не лучше. Если вы хотите разобрать PHP-код, используйте tokenizer
. Это намного надежнее.
Комментарии:
1. ооо, большое вам спасибо, я много искал это решение в Google, возможно, я не знаю, как правильно использовать Google в терминах : ( , я провожу несколько тестов, и это как раз то, что мне нужно, еще раз большое вам спасибо!!!
2. @DavidB: Если это решит вашу проблему, пожалуйста, подумайте о том, чтобы принять мой ответ , нажав на большой значок «галочка» в моем ответе. Спасибо.
3. конечно, извините, это был мой первый вопрос здесь, и я не знал, готово.
4. Не могли бы вы рассказать подробнее? Токенизатор возвращает ту же константу-токен для вызовов функций, что и для обычных старых строк (он возвращает T_STRING), поэтому неясно, как убедиться, что вы нашли вызов функции t, а не строку, содержащую букву t. (Я использую 5.3.11, но в документах не упоминается ни одной константы для вызовов функций, поэтому я предполагаю, что это одинаково во всех версиях.)
Ответ №2:
Предполагая, что у вас нет вызовов функций в вызове t (), самый простой способ сопоставить их —
t([^)]*?)
Комментарии:
1. извините, но я не очень хорошо объяснил, вокруг вызовов de t () много кода, но спасибо за ваше время и помощь