요컨대, 나는 pre_replace
스타일 시트를 찾고 본질적으로 내 웹 사이트의 뷰어를 위해이 경험을 프록시하는 데 활용하고 있으며 외부 도메인 prepend
을 사용하고 현재 href
. 스타일 시트는 이렇게 시작됩니다.
<link rel="stylesheet" type="text/css" href="/assets/css/base.css">
나는 href
및 prepend
도메인을
<link rel="stylesheet" type="text/css" href="http://www.website.com/assets/css/base.css">
내 문제는 HTTP / HTTPS가 포함되지 않은 사이트를 만나면
<link rel="stylesheet" type="text/css" href="//cdn.website.com/assets/css/base.css">
그런 다음 현재 preg replace가 작동하지 않고 스타일 시트를 다음으로 반환합니다.
<link rel="stylesheet" type="text/css" href="http://www.website.com//cdn.website.com/assets/css/base.css">
"//"href를 조작하지 않고 절대 기본 도메인이없는 것으로 만 대체 하기 위해 일종의 If then
with 를 만들 수 preg_replace
있습니까?
preg_replace
사용중인 전류 :
$html = file_get_contents($website_url);
$domain = 'website.com';
$html = preg_replace("/(href|src)\=\"([^(http)])(\/)?/", "$1=\"$domain$2", $html);
echo $html;
if/then/else
정규식 에는 조건문이 있지만 실제로 작동하는 데 필요한 것은 아닙니다.
(?!(href|src)=)(\")\/(\\w+.+)(\">)
암호:
$html = file_get_contents($website_url);
$domain = 'http://website.com';
$result = preg_replace("/(?!(href|src)=)(\")\/(\\w+.+)(\">)/u", "$2$domain/$3$4", $html);
echo $result;
산출:
<link rel="stylesheet" type="text/css" href="http://website.com/assets/css/base.css">
예:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다