gpt4 book ai didi

php - 在 PHP (RegEx) 中提取已加载页面的部分内容

转载 作者:可可西里 更新时间:2023-10-31 23:35:27 24 4
gpt4 key购买 nike

我有一个时事通讯系统,我正试图将其整合到一个 PHP 站点中。 PHP 站点加载一个内容区域,并将脚本加载到页面的头部。这适用于为网站生成的代码,但现在我有了要合并的时事通讯。

最初我打算使用 iFrame,但 AJAX 和 jQuery 调用的数量使它变得相当复杂。

所以我想我可以使用 cURL 将时事通讯页面作为变量加载。然后我打算使用 RegEx 抓取正文标签之间的内容并将其放置在内容区域中。最后,我打算再次使用 RegEx 来搜索头部并抓取任何脚本。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config_live_site."lib/alerts/user/update.php?email=test@test.com.au"); # URL to post to
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); # return into a variable
curl_setopt($ch, CURLOPT_HEADER, 0);
$loaded_result = curl_exec( $ch ); # run!
curl_close($ch);

// Capture the body content and place in $_content
if (preg_match('%<body>([\s\S]*)</body>%', $loaded_result, $regs)) {
$_content .= $regs[1];
} else {
$_content .= "<p>No content to display.</p>";
}

// Capture the scripts and place in the head
if (preg_match('%(<script type="text/javascript">[\s\S]*</script>)%', $loaded_result, $regs)) {
$headDetails .= $regs[0];
}

这在大多数情况下都有效,但如果文档正文中有脚本,它会捕获到最后一个/script'。

我想我的问题有两个方面......

一个。有没有更好的整体方法(我的截止日期很短,所以它需要一个快速的解决方案,而不需要对新闻通讯代码进行过多的编辑)?

B.我需要使用什么 RegEx 才能捕获第一个脚本?

最佳答案

我认为您需要在 * 之后向脚本正则表达式添加一个 ? ,这样它就不会贪心了。贪婪的正则表达式匹配尽可能多(第一个开始标签和最后一个结束标签之间的所有内容),尽可能少的非贪婪匹配(仅开始标签和第一个结束标签之间的内容)。尝试:

%(<script type="text/javascript">[\s\S]*?</script>)%

如前所述,将其更改为 preg_match_all,您应该只匹配各个脚本部分,而不是第一个和最后一个脚本标记之间的所有内容。

关于php - 在 PHP (RegEx) 中提取已加载页面的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2215289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com