CSS内の相対パスを処理する
- quoteなしのストリング(e.g. url(test.png) )は強制的にすべて、"..."で囲う。"..."で囲む際、ストリングをescapeする必要はない。なぜなら、すでにescapeされてなければ、
動作しないからだ。例えば「te"st.png」というファイルを指定する場合、quoteなしのストリングでも、「url(te\"st.png)」というように、「”」を「\」でescapeする必要がある。
- 相対パスの最初のquoteを記号で置き換える。「'」 はself::SQ,「"」はself::DQ。Javascriptへtextが送られたら、SQとDQの後にrelative pathを挿入して、SQとDQは 「'」 と 「"」
に戻す。
/(?:url\(\s*('(?:\\'|\\\n|[^'\n])*?'|"(?:\\"|\\\n|[^"\n])*?"|(?<!['"])([^\s'")]+))\s*\)|@import\s+(?:'(?:\\'|\\\n|[^'\n])*?'|"(?:\\"|\\\n|[^"\n])*?")|@namespace\s+(?:'(?:\\'|\\\n|[^'\n])*?'|"(?:\\"|\\\n|[^"\n])*?")|@namespace\s+\w+\s+(?:'(?:\\'|\\\n|[^'\n])*?'|"(?:\\"|\\\n|[^"\n])*?"))/su
Warning: foreach() argument must be of type array|object, string given in /var/www/html/phpkobo/my-projects/css-obfus/v1-core/public_html/research/obfus-css/rel-path-issue/find-relpath-in-css/--task.php on line 129
@import "img/soruce.png"
@namespace '#myid' ;
@namespace svg '111/222/\
../333' ;
@namespace url( http://www.aaa.\com/ccc/ggg.gif );
.aaa {
background:url( chrome://communicator/skin/ );
background:url( img/http/nq.jpg );
background:url( "/img/dq.png" );
background:url(
../asset/sq.png
);
}
p