根据输入查找字符串的特定部分-PHP regexp
我有以下案文:根据输入查找字符串的特定部分-PHP regexp,php,regex,preg-replace,Php,Regex,Preg Replace,我有以下案文: [[{"type":"media","view_mode":"media_original","fid":"19125","attributes":{"alt":"","class":"media-image","height":"480","typeof":"foaf:Image","width":"480"}}]] Sed iaculis, nisl vel accumsan condimentum, orci felis congue pede, nec pharet
[[{"type":"media","view_mode":"media_original","fid":"19125","attributes":{"alt":"","class":"media-image","height":"480","typeof":"foaf:Image","width":"480"}}]]
Sed iaculis, nisl vel accumsan condimentum, orci felis congue pede, nec pharetra quam ante nec ligula.
[[{"type":"media","view_mode":"media_original","fid":"16145","attributes":{"alt":"","class":"media-image","height":"480","typeof":"foaf:Image","width":"480"}}]]
我想根据fid(19125)选择文本的第一段(括号中的部分)
这是我当前的regexp:
[\[].[^;]*[\]\)]]
但现在它会发现这两种情况。我想对其进行调整,使其只获得具有正确fid(19125)的id。您只需将id添加到正则表达式中即可。我稍微修改了正则表达式,使
[^;]*
变成了[^;]*“fid”:“19125”[^;]*
。这大致相当于在每个匹配中进行包含运算,以查看fid是否等于19125
[\[].[^;]*“fid”:“19125”[^;]*[\]\)]]
只需将id添加到正则表达式中即可。我稍微修改了正则表达式,使
[^;]*
变成了[^;]*“fid”:“19125”[^;]*
。这大致相当于在每个匹配中进行包含运算,以查看fid是否等于19125
[\[].[^;]*“fid”:“19125”[^;]*[\]\)]]
为什么不直接使用
json\u decode
并获取值呢?@ctwheels我认为OP意味着整个代码块(两个json字符串及其之间的文本)就是输入。@mingos这很有意义,感谢您的澄清。您可以使用\[{2}{.“fid”\s*:\s*“19125”.*
为什么不直接使用json\u decode
并获取值呢?@ctwheels我认为OP意味着整个代码块(两个json字符串及其之间的文本)就是输入。@mingos这很有意义,感谢您的澄清。您可以使用\[{2}{.*“fid”\s*:\s*“19125”。*