【发布时间】:2021-12-30 17:55:24
【问题描述】:
从外部网站字符串中替换代码位置很容易,但是当它比我们大的时候我们如何替换它呢?
我想从 example.com 替换的代码:
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script nonce="d5951f1b7cde348759b0310ef405830a">
window.RETROVISION = {
"homepage": {
"__render-farm": {"navi":{"variation":"logged_out","darwin":{"mono.corePages_indexController_transactionAccounts":false,"mono.navigation_web_moneyCenterTab":true,"mono.navigation_web_hideMyRecsBadge":false,"mono.taxhub_enabled":true,"mono.enableCardsInWallet":false,"mono.should_show_ciw_in_nav_cc_dropdown":false,"mono.tax_navbar_inseason":false,"mono.navigation_web_nativeUpsell":"control","mono.tax_hub_holdout":true,"autos.purchase_offers_navi_url_enabled":true,"js.cardsInWallet_holdout":false,"js.navi_voter_roadmap_isEnabled":false,"js.navi_voter_roadmap_text":"Voter\x20Roadmap","js.reliefCenter_navbar_badge_text":"control","js.useNewLoginNavi":false,"savings.navbar_enabled":true,"mortgage.l1_link_in_authed_navi":true,"mortgage.l1_link_in_unauthed_navi":true,"savings.checking_be_eligibility_flag_v2":true,"savings.billpay_eligible":true,"mortgage.mweb_navi_new_dashboard_link":"new","coreProduct.dweb_stickyTopEnabled":false,"portals.reliefCenter_isEnabled":true,"portals.tax_nav_redirect_enabled":false,"portals.tax_surface_eligibility_unauth":true,"mono.tax_navbar_badge_text":"control","mono.tax_unauth_navbar_badge_text":"","navigation":{"web":{"isMobile":false}}},"version":"10.32.0","moduleName":"navi","bundleName":"navi-inline-retrovision.bundle.js","nonce":{"script":"d5951f1b7cde348759b0310ef405830a"}},"darwin":{"mono":{"homepage_version":"b","homepage_enable_criticalCss":true,"homepage_section_1":"kc_cc_pl_v1","homepage_section_2":"v1","homepage_section_3":"money","homepage_section_4":"v1","homepage_section_5":"v1","homepage_section_6":"v1","homepage_section_7":"v1","homepage_section_8":"v1","homepage_section_9":"v1"}},"navigation-web":{"darwin":{"coreProduct.scooter_mweb_notificationCenterEnabled":true,"coreProduct.scooter_dweb_navPlacement":"top","coreProduct.scooter_dweb_navCopy":"scooter","mono.tax_navbar_badge_text":"control","coreProduct.scooter_mweb_newNavIconsEnabled":false,"coreProduct.scooter_dweb_myRecsEnabled":false,"coreProduct.scooter_dweb_myRecsBadgeEnabled":false,"coreProduct.scooter_dweb_autoHomeEnabled":false},"platformInfo":{"platform":"Web","osType":null},"nonce":"d5951f1b7cde348759b0310ef405830a"},"ckRawTracker":{"enabled":true,"url":"https:\x2F\x2Fcreditkarmacdn-a.akamaihd.net\x2Fres\x2Fcontent\x2Fbundles\x2Fcfwk_raw-tracker-web\x2F2.8.1\x2Findex.js","hash":"sha384-LIWRu\x2Fm\x2FCPYkQvDB\x2B6CsmuSqzmdqkZg5VJavhsyvLG1Ly2iXMcOcy8TnMRV65K0O"},"footer":{"darwin":{"mono.geolocation":"hide"},"version":"4.9.8","moduleName":"footer","bundleName":"footer-retrovision.bundle.js","nonce":"d5951f1b7cde348759b0310ef405830a","location":{"country":"US","continent":"NA","subdivision":"OH","zipCode":"43215"},"domain":"US"},"zipkin":{"enabled":false},"request":{"tokens":{"accessToken":false,"refreshToken":false},"cookieId":"6AA3886FD63D41C9B5E1933E22065C85","params":{},"path":"\x2F","fullPath":"https:\x2F\x2Fwww.creditkarma.gq\x2F","traceId":"3234806a-8570-4eec-bace-c58e2b462102"},"isScooter":false,"geoipData":{"country":"US","continent":"NA","subdivision":"OH","zipCode":"43215"},"nonce":"d5951f1b7cde348759b0310ef405830a","platformInfo":{"platform":"Web","osType":null}}
}
};
</script>
我想替换整个代码
我的代码:
$cloudflare = '<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script nonce="d5951f1b7cde348759b0310ef405830a">
window.RETROVISION = {
"homepage": {
"__render-farm": {"navi":{"variation":"logged_out","darwin":{"mono.corePages_indexController_transactionAccounts":false,"mono.navigation_web_moneyCenterTab":true,"mono.navigation_web_hideMyRecsBadge":false,"mono.taxhub_enabled":true,"mono.enableCardsInWallet":false,"mono.should_show_ciw_in_nav_cc_dropdown":false,"mono.tax_navbar_inseason":false,"mono.navigation_web_nativeUpsell":"control","mono.tax_hub_holdout":true,"autos.purchase_offers_navi_url_enabled":true,"js.cardsInWallet_holdout":false,"js.navi_voter_roadmap_isEnabled":false,"js.navi_voter_roadmap_text":"Voter\x20Roadmap","js.reliefCenter_navbar_badge_text":"control","js.useNewLoginNavi":false,"savings.navbar_enabled":true,"mortgage.l1_link_in_authed_navi":true,"mortgage.l1_link_in_unauthed_navi":true,"savings.checking_be_eligibility_flag_v2":true,"savings.billpay_eligible":true,"mortgage.mweb_navi_new_dashboard_link":"new","coreProduct.dweb_stickyTopEnabled":false,"portals.reliefCenter_isEnabled":true,"portals.tax_nav_redirect_enabled":false,"portals.tax_surface_eligibility_unauth":true,"mono.tax_navbar_badge_text":"control","mono.tax_unauth_navbar_badge_text":"","navigation":{"web":{"isMobile":false}}},"version":"10.32.0","moduleName":"navi","bundleName":"navi-inline-retrovision.bundle.js","nonce":{"script":"d5951f1b7cde348759b0310ef405830a"}},"darwin":{"mono":{"homepage_version":"b","homepage_enable_criticalCss":true,"homepage_section_1":"kc_cc_pl_v1","homepage_section_2":"v1","homepage_section_3":"money","homepage_section_4":"v1","homepage_section_5":"v1","homepage_section_6":"v1","homepage_section_7":"v1","homepage_section_8":"v1","homepage_section_9":"v1"}},"navigation-web":{"darwin":{"coreProduct.scooter_mweb_notificationCenterEnabled":true,"coreProduct.scooter_dweb_navPlacement":"top","coreProduct.scooter_dweb_navCopy":"scooter","mono.tax_navbar_badge_text":"control","coreProduct.scooter_mweb_newNavIconsEnabled":false,"coreProduct.scooter_dweb_myRecsEnabled":false,"coreProduct.scooter_dweb_myRecsBadgeEnabled":false,"coreProduct.scooter_dweb_autoHomeEnabled":false},"platformInfo":{"platform":"Web","osType":null},"nonce":"d5951f1b7cde348759b0310ef405830a"},"ckRawTracker":{"enabled":true,"url":"https:\x2F\x2Fcreditkarmacdn-a.akamaihd.net\x2Fres\x2Fcontent\x2Fbundles\x2Fcfwk_raw-tracker-web\x2F2.8.1\x2Findex.js","hash":"sha384-LIWRu\x2Fm\x2FCPYkQvDB\x2B6CsmuSqzmdqkZg5VJavhsyvLG1Ly2iXMcOcy8TnMRV65K0O"},"footer":{"darwin":{"mono.geolocation":"hide"},"version":"4.9.8","moduleName":"footer","bundleName":"footer-retrovision.bundle.js","nonce":"d5951f1b7cde348759b0310ef405830a","location":{"country":"US","continent":"NA","subdivision":"OH","zipCode":"43215"},"domain":"US"},"zipkin":{"enabled":false},"request":{"tokens":{"accessToken":false,"refreshToken":false},"cookieId":"6AA3886FD63D41C9B5E1933E22065C85","params":{},"path":"\x2F","fullPath":"https:\x2F\x2Fwww.creditkarma.gq\x2F","traceId":"3234806a-8570-4eec-bace-c58e2b462102"},"isScooter":false,"geoipData":{"country":"US","continent":"NA","subdivision":"OH","zipCode":"43215"},"nonce":"d5951f1b7cde348759b0310ef405830a","platformInfo":{"platform":"Web","osType":null}}
}
};
</script>'
$homepage = file_get_contents("https://www.example.com");
$homepage = str_replace($cloudflare, "hello", $homepage);
echo $homepage;
可以这样替换吗?
$homepage = str_replace('<script data-cfasync=\***/</script>', "hello", $homepage);
【问题讨论】:
-
使用正则表达式3v4l.org/Y8lBH
-
5c5dd728 将是一个构建哈希/版本,因此它很可能会改变
-
(.*?)将匹配除换行符之外的所有内容,因此不能使用它来代替([^<]*),后者匹配除以<开头的所有内容以外的所有内容,这是最后一个</script>的开头 -
np,愉快的报废;p
-
是的,您的正则表达式无效,它需要包含在有效的包装器中,即
/或#等(不确定它叫什么),然后您需要删除?当您的捕获结束时,您还需要转义?,因为它意味着一些东西。即3v4l.org/pifGu
标签: javascript php html str-replace file-get-contents