Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据输入查找字符串的特定部分-PHP regexp_Php_Regex_Preg Replace - Fatal编程技术网

根据输入查找字符串的特定部分-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”。*