有人能解释一下下面几行发生了什么吗。
JLog::addLogger(array('text_file' => 'log.php'), JLog::INFO);
JLog::add('Test', JLog::INFO, '((?:test<[a-zA-Z][^>]*>'s*){0,7})');
//logger output :: testa-za-zs07
- 作品
((?:test<[a-zA-Z][^>]*>'s*){0,7})
中发生了什么 - 为什么joomla logger没有像
((?:test<[a-zA-Z][^>]*>'s*){0,7})
那样给出/记录确切的字符串 - 有人能解释每一个
((?:test<[a-zA-Z][^>]*>'s*){0,7})
吗
((?:test<[a-zA-Z][^>]*>'s*){0,7})
是一个正则表达式。以下是对这个表达的含义的解释:http://regex101.com/r/dZ8sA1
如果在你阅读了该链接后仍然不清楚,请询问,我会尝试进一步解释。
这是一个正则表达式。
((?:test<[a-zA-Z][^>]*>'s*){0,7})
这是一个庞大的捕捉小组。
?:
表示该括号的非捕获组。
[a-zA-Z]
表示一个字符a-z或a-z。
[^>]*
表示除">"以外的所有内容为零或更多。
's*
表示零个或多个空格符号(制表符、空格等)
{0,7}
表示从0到7的重复
所以,基本上整个模式意味着:
查找测试,然后<符号,然后一个符号a-zA-Z,然后零个或多个符号,除了>,然后是>符号,然后是可选空间。从0到7个重复中寻找这个。因此,它会查找一个前面有"test"单词的标签。
这里有一些例子。它只匹配前7个测试的