我正在循環使用大量的.PHP文件,將它們視爲純文本,並試圖找到某些函數的文本參數。在文本中查找特定參數
PHP文件中的函數全部通過使用\L10n::
來調用,然後獲取字符串參數。
我試圖找到的文本示例如下。
我已經運用以下正則表達式正確找到了這個問題。
pattern = re.compile("L10n::[\w]+\((?:\'(.*?)\')\,?\s?(?:\'(.*?)\')*", re.MULTILINE | re.IGNORECASE | re.DOTALL)
OR
pattern = re.compile("\\L10n::(.*?)\('(.*?)'\)", re.MULTILINE | re.IGNORECASE | re.DOTALL)
bar\L10n::__('Double _')baz
bar\L10n::esc_attr__('Escape Attributes __')baz
bar\L10n::esc_html__('Escapted HTML __')baz
bar\L10n::_e('Echos')baz
bar\L10n::esc_html_e('Echo Escaped HTML')baz
bar\L10n::_x('Underscore X')baz
bar\L10n::_ex('Echo underscore x')baz
bar\L10n::esc_attr_x('Escape Attribute X')baz
bar\L10n::esc_html_x('Escaped HTML X')baz
bar\L10n::_n('Nothing')baz
bar\L10n::_nx('No X')baz
bar\L10n::_n_noop('N No-Op')baz
bar\L10n::_nx_noop('No X No-Op')baz
有了這樣說,一些多個參數
bar\L10n::_n('Text 1', 'Text 2', $variable)
在這種情況下,我想文本1和文本2,而不是$變量。
爲了讓它更有趣...有時參數不是全部在一行上。
bar\L10n::_n(
'Text 1',
'Text 2',
$variable
)
如果文本有逃脫「裏面,如‘這看起來在人們間沒有\’這裏T」
第二個正則表達式拍打我上面有我上面有了第一個正則表達式模式失敗如果有多個文本變量,則會失敗。 (它也帶來了_n部分,但沒關係)
任何幫助,將不勝感激。
編輯:
我也應該狀態,會出現在文件中的其他功能,我希望忽略。
如:
foo\file::__('function to ignore')
我不想以配合這些。
我也想匹配L10n函數在其他函數中用作參數的地方。
EG
bar\file::__(bar\L10n::_e('Text 1'), 'Other variable to ignore')
感謝您的。 我想要一本字典,所以這很容易,但我希望它的結構如下: '{'Double _':['filename_1','filename_2'],'Text 1': ['filename_2','filename_3'] ..} (之前我得到這個代碼我循環通過文件,所以我想創建一個文件的列表中找到該短語) 你會怎麼樣改變你的代碼來適應這個? –
使用regAttr正則表達式並將它們用作鍵可能?對不起,我不熟悉.PHP文件。 –
查看我的其他評論。 沒關係......被搜索有點可怕! :( –