테스트 사이트 - 개발 중인 베타 버전입니다

preg_match 함수.. 채택완료

NorthStar 11년 전 조회 5,056
<br />
Php5.3.0을 사용하면서 eregi 함수가 deprecate 되어서 수정중에있는데요.<br />
<br />
몇몇 부분을 어떻게 수정해야할지 몰라 질문 드립니다.<br />
<br />
<br />
eregi() 함수 대신 preg_match 함수에 i modifier 붙이는건 알고 있습니다.<br />
<br />
그런데 따옴표 안에 있는 항목이 없어서 어떻게 수정해야할지 모르겠습니다.<br />
<br />
에러메시지는 다음과 같습니다.<br />
<br />
Warning: preg_match(): Delimiter must not be alphanumeric or backslash in /home/vivid-viewpoint/bbs/_head.php on line 248<br />
<br />
<br />
그리고 해당 파일의 248번째 줄 전후는<br />
<br />
// 로그인, 아웃, 회원 정보 수정, 쪽지 메뉴 버튼<br />
<br />
$s_url = $REQUEST_URI;<br />
if($id&amp;!preg_match($id,$s_url)) {&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;&lt;&lt;&lt;248번째 줄<br />
if(preg_match(&quot;\?&quot;,$s_url)) $s_url = $s_url . &quot;&amp;id=$id&quot;;<br />
else $s_url = $s_url . &quot;?id=$id&quot;;<br />
}<br />
$s_url = urlencode($s_url);<br />
<br />
<br />
어떻게 수정해야하나요?<br />
<br />
<br />
비슷한 경우를 하나 더 가져오자면<br />
<br />
include &quot;_head.php&quot;;<br />
<br />
if(!preg_match($HTTP_HOST,$HTTP_REFERER)) Error(&quot;정상적으로 글을 삭제하여 주시기 바랍니다.&quot;);
댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
11년 전

패턴 앞뒤에 슬래쉬를 붙여주시면 됩니다.

preg_match("/$id/i",$s_url)

preg_match('/\?/',$s_url)​ 

// 사이에 변수가 들어가는 경우 제어문자 주의하시구요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

N
NorthStar
11년 전
preg_match('/\?/',$s_url)​ 에서는 i modifier사용하지 않는건가요..?ㅜ
더불어
if(!preg_match($HTTP_HOST,$HTTP_REFERER)) 이 라인도

if(!preg_match("/$HTTP_HOST/i",$HTTP_REFERER))
이렇게 바꿔주면 되는것인지요..?ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

11년 전

/i 의 경우는 '대소문자 구분없이'라는 거니 단지 '?' 찾기 위해서는 넣어줄 필요가 없겠죠.

변경자가 들어가는 경우는 좀 더 부하가 걸리는걸로 알고있습니다. 필요없는 경우는 빼주는게 좋을거라 생각해서 일부러 안넣었었구요,

 

if(!preg_match("/$HTTP_HOST/i",$HTTP_REFERER))

이것도​ 아마도 정상적으로 잡아내긴 할겁니다만 도메인에 들어가는 점(.)문자가 제어문자로 쓰이니까 기왕이면 '/'.str_replace('.','\.',$HTTP_HOST).'/i' 로 해주는게 확실하겠죠.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인