php - 编写正则表达式以在 laravel 项目中查找翻译

标签 php regex laravel pcre

我写了一个正则表达式模式:

(trans|trans_choice|Lang::get|Lang::choice|Lang::trans|Lang::transChoice|@lang|@choice)\(([\'"]([a-zA-Z0-9_-]+([.][^)\'"]+?)+)[\'"])(\s?,\s?.*)*?[\)\]];?

用于定位 laravel 翻译字符串,例如:

trans('email.subject)
@lang('email.confirm-email-address-button')

但我无法弄清楚如何定位其中包含斜线的翻译字符串,例如:

@lang('emails/order-received.edit-order-button')

最佳答案

你可以使用

(trans(?:_choice)?|Lang::(?:get|choice|trans(?:Choice)?)|@(?:lang|choice))\(([\'"]([^\'"]+)[\'"])[)\]];?

参见 regex demo .

详情

  • (trans(?:_choice)?|Lang::(?:get|choice|trans(?:Choice)?)|@(?:lang|choice)) - 第 1 组:
    • trans(?:_choice)? - trans 后跟可选的 _choice
    • | - 或者
    • Lang::(?:get|choice|trans(?:Choice)?) - Lang:: 后跟 getchoicetranstransChoice
    • | - 或
    • @(?:lang|choice) - @ 后跟 langchoice
  • \( - 一个 ( 字符
  • ([\'"]([^\'"]+)[\'"]) - 第 2 组:'",然后第 3 组匹配除 '" 之外的任何 1+ 个字符,然后是 "'
  • [)\]] - )] 字符
  • ;? - 可选的 ;

注意:使用一个正则表达式解析代码可能过于脆弱。请考虑在更复杂的解决方案中使用此正则表达式或使用专用解析器(如果存在)。

关于php - 编写正则表达式以在 laravel 项目中查找翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704888/

相关文章:

php - mysql 特定的 select with order

javascript - 匹配货币格式的正则表达式模式 - Javascript

regex - 从 PowerShell 中的正则表达式搜索获取捕获数组

regex - 如何在 bash 中替换字符串中的模式

php - Laravel 框架无法启动,为什么?

php - Laravel 获取最新插入用户的 ID

PHP 通过引用传递增加了内存使用

php - 如何使用 DOMDocument::loadXML() 获取解析错误

php - Laravel Cashier 10 - 尝试显示 Stripe 元素时出错

javascript - 将数据数组从表单传递到 ajax、PHP post 文件