>백엔드 개발 >PHP 튜토리얼 >php5.3에서는 ereg() 함수가 더 이상 사용되지 않는다는 메시지를 표시합니다. 오류 문제 해결책_php 팁

php5.3에서는 ereg() 함수가 더 이상 사용되지 않는다는 메시지를 표시합니다. 오류 문제 해결책_php 팁

WBOY
WBOY원래의
2016-05-16 20:32:131071검색

이 기사의 예에서는 php5.3에서 ereg() 함수가 더 이상 사용되지 않음 오류 문제를 해결하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.

1. 질문:

PHP 5.3 ereg()는 정상적으로 사용할 수 없습니다. "ereg() 함수가 더 이상 사용되지 않습니다."라는 메시지는 함수가 업그레이드되었으며 규칙을 적용하려면 //를 사용하여 preg_match해야 하기 때문입니다. , php5.3도 ereg를 사용합니다. 리듬이 포기되었습니다.

PHP 5.3 ereg()는 정상적으로 사용할 수 없으며 "ereg() 함수는 더 이상 사용되지 않습니다."라는 메시지가 표시됩니다.
문제의 근본 원인은 PHP에 두 가지 정규 표현식 방법이 있다는 것입니다. 하나는 posix이고 다른 하나는 perl입니다. PHP6은 posix 정규 표현식 방법을 폐지할 예정이므로 preg_match가 나중에 추가되었습니다. 이 문제에 대한 해결책은 매우 간단합니다. ereg 앞에 필터 프롬프트 정보 기호를 추가하면 됩니다. ereg()를 @ereg()로 변경하면 됩니다. 이는 프롬프트 정보를 차단하지만 여전히 근본적인 문제는 해결되지 않습니다. PHP 버전 5.2 이전에는 ereg를 정상적으로 사용했습니다. PHP 5.3 이후에는 ereg 대신 preg_match를 사용해야 합니다. 그래서 이렇게 되어야 합니다.

원본: ereg("^[0-9]*$",$page)는 다음과 같습니다: preg_match("/^[0-9]*$/",$page)

특별 알림: posix와 perl의 명백한 표현 차이점은 슬래시 추가 여부이므로 ereg와 비교할 때 후자는 정규 표현식 앞뒤에 두 개의 "/" 기호를 추가하는데 이는 필수입니다.

예:

변경 전:

코드 복사 코드는 다음과 같습니다.
function inject_check($sql_str) {
$sql_str = strtolower($sql_str);
return eregi('fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str) / / 필터
}

2.
코드가 있는 파일 위치 찾기:
코드 복사 코드는 다음과 같습니다.
function inject_check($sql_str) {
$sql_str = strtolower($sql_str);
return preg_match('/fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile/', $sql_str) ; // 필터
}


참고: 시작과 끝에 '/'를 추가하세요. 이 단락에 대한 참조: http://www.jb51.net/article/38857.htm

보충: 이 문제는 php5.2 이전 버전에서는 발생하지 않습니다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.