используйте регулярное выражение для поиска вызовов функций в коде

#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 () много кода, но спасибо за ваше время и помощь