Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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 预匹配所有多个内容_Php_Regex_Preg Match All - Fatal编程技术网

Php 预匹配所有多个内容

Php 预匹配所有多个内容,php,regex,preg-match-all,Php,Regex,Preg Match All,我想从一个具有preg_match_all功能的站点获取多个数据。但是当我多次使用这个regex命令(.*)时,该函数不起作用 它不是json。我从instagram个人资料的源代码中获取数据。例如:查看来源:https://www.instagram.com/ziynetaki打开链接时,您可以看到以下代码。script type=“text/javascript”>窗口。\u sharedData=。。。。。 我试过: $display = '#__typename":"GraphImage

我想从一个具有preg_match_all功能的站点获取多个数据。但是当我多次使用这个regex命令(.*)时,该函数不起作用

它不是json。我从instagram个人资料的源代码中获取数据。例如:查看来源:https://www.instagram.com/ziynetaki打开链接时,您可以看到以下代码。script type=“text/javascript”>窗口。\u sharedData=。。。。。 我试过:

$display = '#__typename":"GraphImage","id":"(.*?)","edge_media_to_caption":{"edges":[{"node":{"text":"(.*?)"}}]},"shortcode":"(.*?)","edge_media_to_comment":{"count":(.*?)},"comments_disabled":false,"taken_at_timestamp":(.*?),"dimensions":{"height":(.*?),"width":(.*?)},"display_url":"(.*?)","edge_liked_by"#i';

preg_match_all($display, $url, $dop);
print_r($dop);
并且输出为空:

Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) )

有人能帮我吗?我搜索了很多解决方案,但找不到任何信息。我不知道如何在互联网上搜索,因为我的英语不是很好,谢谢。

您的正则表达式模式有一个小错误,导致您的匹配失败

您的正则表达式在这部分中有一个
[
字符
{“edges”:[{“node”
,您没有转义它,因此它的行为就像一个字符集,破坏了正则表达式的预期含义

只需转义
[
即可使您的模式开始匹配并给出预期结果。此外,如果您的输入跨越多行,您可以启用
DOTALL
模式使
匹配新行,但到目前为止,您的输入字符串不需要这样做,并且可以按原样工作

检查你的PHP代码

$url = '"edges":[{"node":{"__typename":"GraphImage","id":"1998193948597745904","edge_media_to_caption":{"edges":[{"node":{"text":"test"}}]},"shortcode":"Bu7As8ygPjw","edge_media_to_comment":{"count":0},"comments_disabled":false,"taken_at_timestamp":1552423302,"dimensions":{"height":216,"width":320},"display_url":"https://instagram.fdel1-4.fna.fbcdn.net/vp/b26fc82649aebaba80ff8750844d9476/5D32EFAE/t51.2885-15/e35/52508202_381950182383672_2887085630092404003_n.jpg?_nc_ht=instagram.fdel1-4.fna.fbcdn.net","edge_liked_by":{"count":6},"edge_media_preview_like":{"count":6}';
$display = '#__typename":"GraphImage","id":"(.*?)","edge_media_to_caption":{"edges":\[{"node":{"text":"(.*?)"}}]},"shortcode":"(.*?)","edge_media_to_comment":{"count":(.*?)},"comments_disabled":false,"taken_at_timestamp":(.*?),"dimensions":{"height":(.*?),"width":(.*?)},"display_url":"(.*?)","edge_liked_by"#i';

preg_match_all($display, $url, $dop);
print_r($dop);
打印所有您想要的捕获

Array
(
    [0] => Array
        (
            [0] => __typename":"GraphImage","id":"1998193948597745904","edge_media_to_caption":{"edges":[{"node":{"text":"test"}}]},"shortcode":"Bu7As8ygPjw","edge_media_to_comment":{"count":0},"comments_disabled":false,"taken_at_timestamp":1552423302,"dimensions":{"height":216,"width":320},"display_url":"https://instagram.fdel1-4.fna.fbcdn.net/vp/b26fc82649aebaba80ff8750844d9476/5D32EFAE/t51.2885-15/e35/52508202_381950182383672_2887085630092404003_n.jpg?_nc_ht=instagram.fdel1-4.fna.fbcdn.net","edge_liked_by"
        )

    [1] => Array
        (
            [0] => 1998193948597745904
        )

    [2] => Array
        (
            [0] => test
        )

    [3] => Array
        (
            [0] => Bu7As8ygPjw
        )

    [4] => Array
        (
            [0] => 0
        )

    [5] => Array
        (
            [0] => 1552423302
        )

    [6] => Array
        (
            [0] => 216
        )

    [7] => Array
        (
            [0] => 320
        )

    [8] => Array
        (
            [0] => https://instagram.fdel1-4.fna.fbcdn.net/vp/b26fc82649aebaba80ff8750844d9476/5D32EFAE/t51.2885-15/e35/52508202_381950182383672_2887085630092404003_n.jpg?_nc_ht=instagram.fdel1-4.fna.fbcdn.net
        )

)

您的输入字符串是什么?(似乎是JSON)将
#i
替换为
#si
默认情况下不匹配换行符。@WiktorStribiżew我会说:使用而不是使用RegEx@WiktorStribiżew因为我知道你有点太喜欢正则表达式了,看起来你邀请OP继续尝试正则表达式,而不是一种合适的方式。我从来没有使用正则表达式来解析JS继续。真的非常感谢你。这个代码运行得很好。我很感谢你。(鼓掌,鼓掌,鼓掌..十亿鼓掌:))哈哈,很高兴能帮上忙:)