정확한 표현식을 쓰려고 합니다 정보
정확한 표현식을 쓰려고 합니다본문
코드를 가져다 사용하다 보니 문제가 좀 생겨서 도움글을 좀 구해봅니다
/adm/ 폴더내 파일의 css와 그외 폴더 파일들에 대한 css를 구분해서 사용하려고 합니다
--------------------------------------------------------------------------------
/public_html/gnuboard4/adm/ 폴더안의 파일들
/public_html/기타폴더(adm 폴더제외) 안의 파일들
일단, 아래처럼 사용을 해봤습니다
------------ 사용예제 ---------------------------------------------------------
<? // 스타일 쉬트 : 관리자화면과 일반화면 구분
if (preg_match("/adm/", $_SERVER[PHP_SELF]))
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
else
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
?>
-------------------------------------------------------------------------------
위처럼 사용을 했더니, /adm/폴더 뿐만이 아니라 기타 다른 폴더에 있는 파일들중
"adm" 으로 시작되는 파일명에도 /adm/폴더에 적용되는 스타일값이 적용이 되네요
그래서 다시 아래와 같은 코드를 적용 해봤습니다
------------ 사용예제 2 ---------------------------------------------------------
<? // 스타일 쉬트 : 관리자화면과 일반화면 구분
if (preg_match("/\/g4\/gnuboard\/adm\/.*.php$/", $_SERVER[PHP_SELF]))
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
else
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
?>
-------------------------------------------------------------------------------
그랬더니, 이번에는 adm폴더내의 파일들에 style_common.css에 지정된 배경이 적용되네요..
.........
.........
질문 1) 여러 폴더중에 ...
/public_html/gnuboard4/adm/ 폴더안의 파일들에 대한 css와
/public_html/기타폴더(adm 폴더제외) 안의 파일들에 대한 css 값을 달리 적용하고자 합니다
어떻게 구문을 작성해야 의도한 표현식(구문)이 될까요??
질문2) 위 내용중 '사용예제2'의 표현식중에..
"/\/g4\/gnuboard\/adm\/.*.php$/" <-----이부분을 어떻게 해석애햐하는지 좀 가르쳐 주십시요
궁금한건 /\ <--- 이 형태가 잘 이해가 안되는군요. -_- ;;
통상 경로를 지칭하는거라면,
"/g4/gnuboard/adm/.*.php/" <=--- 이렇게 해야하지 않는지요
한수 가르쳐 주시겠습니까?
/adm/ 폴더내 파일의 css와 그외 폴더 파일들에 대한 css를 구분해서 사용하려고 합니다
--------------------------------------------------------------------------------
/public_html/gnuboard4/adm/ 폴더안의 파일들
/public_html/기타폴더(adm 폴더제외) 안의 파일들
일단, 아래처럼 사용을 해봤습니다
------------ 사용예제 ---------------------------------------------------------
<? // 스타일 쉬트 : 관리자화면과 일반화면 구분
if (preg_match("/adm/", $_SERVER[PHP_SELF]))
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
else
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
?>
-------------------------------------------------------------------------------
위처럼 사용을 했더니, /adm/폴더 뿐만이 아니라 기타 다른 폴더에 있는 파일들중
"adm" 으로 시작되는 파일명에도 /adm/폴더에 적용되는 스타일값이 적용이 되네요
그래서 다시 아래와 같은 코드를 적용 해봤습니다
------------ 사용예제 2 ---------------------------------------------------------
<? // 스타일 쉬트 : 관리자화면과 일반화면 구분
if (preg_match("/\/g4\/gnuboard\/adm\/.*.php$/", $_SERVER[PHP_SELF]))
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
else
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
?>
-------------------------------------------------------------------------------
그랬더니, 이번에는 adm폴더내의 파일들에 style_common.css에 지정된 배경이 적용되네요..
.........
.........
질문 1) 여러 폴더중에 ...
/public_html/gnuboard4/adm/ 폴더안의 파일들에 대한 css와
/public_html/기타폴더(adm 폴더제외) 안의 파일들에 대한 css 값을 달리 적용하고자 합니다
어떻게 구문을 작성해야 의도한 표현식(구문)이 될까요??
질문2) 위 내용중 '사용예제2'의 표현식중에..
"/\/g4\/gnuboard\/adm\/.*.php$/" <-----이부분을 어떻게 해석애햐하는지 좀 가르쳐 주십시요
궁금한건 /\ <--- 이 형태가 잘 이해가 안되는군요. -_- ;;
통상 경로를 지칭하는거라면,
"/g4/gnuboard/adm/.*.php/" <=--- 이렇게 해야하지 않는지요
한수 가르쳐 주시겠습니까?
댓글 전체
if(preg_match("/^\/g4\/gnuboard\/adm\//i", $_SERVER['PHP_SELF']) == true){
} else {
}
이것같은데요?
preg_match
preg_match("//",$match);
형태 입니다.
/로 시작해서 /로 끝납니다.
그래서 //// 이런식으로 오면 머리가 아파져서
/를 escape한다고 하나요?
/는 시작과 끝을 알리는 태그 이므로 그 안에 나오는 / 는 \/ 해서 문자로 인식 시키는 겁니다.
\r\n
\t
\.
\?
마찬가지 입니다.
.*.php 는
.*
뭐가 올지는 몰름. 여러개 나올수도 있고 하나도 안올수도 있음
.
뭔가는 하나 나옴
php
php는 반드시 나옴.
preg_match를 검색해보시면 될듯요.
정규표현식은 .. 머리 아파요. 해도해도 적응이 안돼는 넘.
정규표현식은
php용
javascript 용
linux 용이 있습니다.
다들 비슷합니다. 이기회에 공부한번 해보세요 ^^
} else {
}
이것같은데요?
preg_match
preg_match("//",$match);
형태 입니다.
/로 시작해서 /로 끝납니다.
그래서 //// 이런식으로 오면 머리가 아파져서
/를 escape한다고 하나요?
/는 시작과 끝을 알리는 태그 이므로 그 안에 나오는 / 는 \/ 해서 문자로 인식 시키는 겁니다.
\r\n
\t
\.
\?
마찬가지 입니다.
.*.php 는
.*
뭐가 올지는 몰름. 여러개 나올수도 있고 하나도 안올수도 있음
.
뭔가는 하나 나옴
php
php는 반드시 나옴.
preg_match를 검색해보시면 될듯요.
정규표현식은 .. 머리 아파요. 해도해도 적응이 안돼는 넘.
정규표현식은
php용
javascript 용
linux 용이 있습니다.
다들 비슷합니다. 이기회에 공부한번 해보세요 ^^
정말 환장하게 고맙습니다 ^^ ;;
말씀하신대로 공부를 한다고 하지만, 나이탓인지 -_- ;; 홀로 아무리 책을 봐도 굳은 머리로는 이해가 잘 되지를 않았는데 ^^;; ...
\r\n
\t
\.
\? ........와 관련한 설명은 이해가 쏙 됩니다. 감사합니다 ^^
------------------------------------------------------------------------------------
일단, 댓글 내용을 참고로 해서 다시 코드를 아래와 같이 짜집기 해보았습니다
- 그누보드의 adm 폴더에만 style.css 값 적용하고 나머지는 style_common.css 적용
<?
if(preg_match("/^\/gnuboard\/adm\//i", $_SERVER['PHP_SELF']) == true){
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
} else {
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
}
?>
위처럼 하니 css가 먹히긴 합니다 ^^... 근데, 아직 코드에 대한 이해가 .. ㅎ
------------------------------------------------------------------------------------
....적어주신 내용중에...
if(preg_match("/^\/g4\/gnuboard\/adm\//i", $_SERVER['PHP_SELF']) == true){
} else {
}
위에서 3가지 의문....
1) 코드내부의 처음에 ("/^\/ .... 에서 ^ <----- 이거 그럼 무슨 의미인지요?? (키보드 숫자 6번키...shif+6)
찾아보니... ^ 는 문자열의 시작을 의미한다는 의미라고 해석되어 있는데..
그럼 gnuboard 가 아니라 /gnuboard라고 처음 인식한다는 뜻???
2) 코드내부의 중간에 \//i", ...에서 i <----가 붙는 이유는 무엇입니까??
문자열의 시작은 ^ 이고 끝은 $ 이라고 표현식에 되어 있는데
위 적어주신 내용에는 /i 만 있는데 어떤 의미인지 이해가 좀 ... ^^
(공부해보라고 하셔서... 한번 검색을 해봤습니다만, ^^ ... 아직 이해가 ㅎ)
....
.... 위 1), 2)의 경우 그냥 처음문자열은 /^ ... 문자열 끝은 /i 이렇게 해석되는건가요?
3) 그리고 preg_match 는 언급해주신 거 처럼 preg_match("//",$match); 의 형태인데
뒤에 == true 를 항상 붙여줘야 하는지요..보통 안쓰고 구문을 많이 만들었던거 같은데...
추가로 좀 .... 한수 지도 부탁드립니다 ^^ 꾸벅~
말씀하신대로 공부를 한다고 하지만, 나이탓인지 -_- ;; 홀로 아무리 책을 봐도 굳은 머리로는 이해가 잘 되지를 않았는데 ^^;; ...
\r\n
\t
\.
\? ........와 관련한 설명은 이해가 쏙 됩니다. 감사합니다 ^^
------------------------------------------------------------------------------------
일단, 댓글 내용을 참고로 해서 다시 코드를 아래와 같이 짜집기 해보았습니다
- 그누보드의 adm 폴더에만 style.css 값 적용하고 나머지는 style_common.css 적용
<?
if(preg_match("/^\/gnuboard\/adm\//i", $_SERVER['PHP_SELF']) == true){
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style.css'>";
} else {
echo "<link rel='stylesheet' type='text/css' href='{$g4['path']}/style_common.css'>";
}
?>
위처럼 하니 css가 먹히긴 합니다 ^^... 근데, 아직 코드에 대한 이해가 .. ㅎ
------------------------------------------------------------------------------------
....적어주신 내용중에...
if(preg_match("/^\/g4\/gnuboard\/adm\//i", $_SERVER['PHP_SELF']) == true){
} else {
}
위에서 3가지 의문....
1) 코드내부의 처음에 ("/^\/ .... 에서 ^ <----- 이거 그럼 무슨 의미인지요?? (키보드 숫자 6번키...shif+6)
찾아보니... ^ 는 문자열의 시작을 의미한다는 의미라고 해석되어 있는데..
그럼 gnuboard 가 아니라 /gnuboard라고 처음 인식한다는 뜻???
2) 코드내부의 중간에 \//i", ...에서 i <----가 붙는 이유는 무엇입니까??
문자열의 시작은 ^ 이고 끝은 $ 이라고 표현식에 되어 있는데
위 적어주신 내용에는 /i 만 있는데 어떤 의미인지 이해가 좀 ... ^^
(공부해보라고 하셔서... 한번 검색을 해봤습니다만, ^^ ... 아직 이해가 ㅎ)
....
.... 위 1), 2)의 경우 그냥 처음문자열은 /^ ... 문자열 끝은 /i 이렇게 해석되는건가요?
3) 그리고 preg_match 는 언급해주신 거 처럼 preg_match("//",$match); 의 형태인데
뒤에 == true 를 항상 붙여줘야 하는지요..보통 안쓰고 구문을 많이 만들었던거 같은데...
추가로 좀 .... 한수 지도 부탁드립니다 ^^ 꾸벅~
preg_match()는
pattern 이라고해야 하나? 뒤에 나오는 문자열의 일정한 패턴을 검사 하는 겁니다.
preg_match("/$pattern/",$string);
^는
문자열의 시작이 ^/gnuboard 여야 한다는 것을 의미합니다.
&는
문자열의 끝이 php$라면 php로 끝나야 한다는 것을 의미합니다.
/$pattern/i
에서 뒤에 붙은 i 는 구분자라고해서
패턴에 일정한 조건을 부여 합니다.
i : case insensitive 대소문자 구별 안함.
m : multiline 들어온 문자열에 \r\n이 있더라도 검사하라
g : 한번 나왔다고 멈추지 말고 계속해서 검사하라.
그리고 == true 를 붙이는건 제 개인적인 습관입니다. ^^;
어디서 줏어 들은게 if($a==true) 가 if($a != false) 즉 부정을 체킹하는것보단 긍정을 체크하는게 더 빠르다는 거여서. ==true 해주는게 구문이해 하는데도 더 빠르구요.
특이한 경우는 ===, !== 도 써줘야 해서. 그냥 습관입니다.
pattern 이라고해야 하나? 뒤에 나오는 문자열의 일정한 패턴을 검사 하는 겁니다.
preg_match("/$pattern/",$string);
^는
문자열의 시작이 ^/gnuboard 여야 한다는 것을 의미합니다.
&는
문자열의 끝이 php$라면 php로 끝나야 한다는 것을 의미합니다.
/$pattern/i
에서 뒤에 붙은 i 는 구분자라고해서
패턴에 일정한 조건을 부여 합니다.
i : case insensitive 대소문자 구별 안함.
m : multiline 들어온 문자열에 \r\n이 있더라도 검사하라
g : 한번 나왔다고 멈추지 말고 계속해서 검사하라.
그리고 == true 를 붙이는건 제 개인적인 습관입니다. ^^;
어디서 줏어 들은게 if($a==true) 가 if($a != false) 즉 부정을 체킹하는것보단 긍정을 체크하는게 더 빠르다는 거여서. ==true 해주는게 구문이해 하는데도 더 빠르구요.
특이한 경우는 ===, !== 도 써줘야 해서. 그냥 습관입니다.
시간내주셔서 감사합니다. 팁에 대한 도움과 이해글 감사합니다 ^^;;