php - 正则表达式/ PHP - 在包含两个变量的文本中查找字符串
问题描述
我希望在日志文件中找到 URL 的所有匹配项,然后提取这些匹配项的一些数据。我对正则表达式一点也不擅长,所以我找不到。
我试图找到的事件:
// this is the string i want to find,
// in every match 1113321569 and the acceses_token will change
Api::log : {"url":"https://api.test.com//v0/notes/1113321569/notes?access_token=eyJhbGciOiJSUzI1NiJ9.eyJydGUiOiIxNTYyMDM5NjUxNDgxIiwidXNlcl9pZCI6MTAzMTU1MzI0MywidXNlcl9"
基本上我需要一个正则表达式来找到具有1113321569
和eyJhbGciOiJSUzI1NiJ9.eyJydGUiOiIxNTYyMDM5NjUxNDgxIiwidXNlcl9pZCI6MTAzMTU1MzI0MywidXNlcl9
作为变量的文本,在我找到整个字符串之后,我需要提取这两个变量。
你们能帮帮我吗?
解决方案
您可以使用正则表达式之类的东西(?<=\/)(\d+)(?=\/).+(?:=)(\S+)(?:")
:
preg_match('/(?<=\/)(\d+)(?=\/).+(?:=)(\S+)(?:")/', $input_line, $output_array);
这利用了积极的后视和积极的前瞻来对两个目标进行分组:
array(3
0 => 1113321569/notes?access_token=eyJhbGciOiJSUzI1NiJ9.eyJydGUiOiIxNTYyMDM5NjUxNDgxIiwidXNlcl9pZCI6MTAzMTU1MzI0MywidXNlcl9"
1 => 1113321569
2 => eyJhbGciOiJSUzI1NiJ9.eyJydGUiOiIxNTYyMDM5NjUxNDgxIiwidXNlcl9pZCI6MTAzMTU1MzI0MywidXNlcl9
)
推荐阅读
- arrays - 将 unicode 代码点数组转换为字符串
- javascript - 冻结没有丑陋循环和固定宽度/左值的动态表列?
- c# - 如何在 .NET 核心中使用 MagickImage 向图像添加填充
- plotly - 如何在 Plotly 中设置非零零线
- python - How to call my_function in main & prompt user for input in main method; my_function accepts user input & concatenates in reverse order (Python 3)
- prolog - Prolog中实数的非线性约束
- php - 为什么 TCPDF 显示?代替 Č 从 word 文件转换文本时
- python - 运行“conda update --all”会导致错误。[苹果系统]
- python - Python - 将 numpy 数组转换为 JSON
- caching - 即使我将元数据缓存控制设置为几天,Amazon S3 缓存也不起作用