php - 如何使用正则表达式查找特定模式?
问题描述
我在调用用户定义函数的目录中有一些 .php 文件:
_l($string);
每次将不同的字符串传递给该函数并且所有字符串都是静态的(即用户输入没有输入单个字符串)。
现在我想要一个脚本,它可以列出该目录中所有文件的所有字符串,这些文件被传递到 _l($string); 我试过:
$fp = fopen($file, "r");
while(!feof($fp)) {
$content .= fgets($fp, filesize($file));
if(preg_match_all('/(_l\(\'.*?\'\);)/', fgets($fp, filesize($file)), $matches)){
foreach ($matches as $key => $value) {
array_push($text, $value[0]);
}
}
}
我得到字符串,但不是文件中的每个字符串,有些字符串与给定的正则表达式不匹配,那么获取所有字符串所需的条件是什么?
解决方案
这更容易将双引号"
或单'
引号中的字符串作为_l()
函数参数。
$string = file_get_contents($file);
preg_match_all('/_l\([\'"](.*?)[\'"]\);/', $string, $matches);
$text = $matches[1];
如果需要,您可以在 之前和之后添加一些可选(
空格)
:
'/_l\s*\(\s*[\'"](.*?)[\'"]\s*\);/'
此外,如果该函数可以在循环中使用,if
或者它没有被分号终止,;
那么将其从模式中删除。
推荐阅读
- java - 如何以这种方法关闭数据库连接?
- python - 如何从文本中检索值
- tomcat - 从 Keycloak 登录或注销后通知应用清除缓存
- python - 时间序列预测 model.predict()
- javascript - 在 JS 代码中编写 CSS 以从 TextField 中删除箭头按钮
- javascript - 在节点 js 中获取谷歌日历事件 ID
- java - 如何实现百万分之一的机会?
- c++ - 将qml项目值传递给cpp后如何与它们交互?
- python - 调用类变量引用的 Python 非成员函数
- java - IntelliJ:如果我调用带有 @VisibleForTesting 注释的方法,则会收到警告