7가지 고전적인 PHP 인터뷰 질문(답변 포함)

藏色散人
풀어 주다: 2023-04-10 06:42:02
앞으로
4975명이 탐색했습니다.

이 글은 7가지 고전적인 PHP 인터뷰 질문(답변 포함)을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 두 배열을 병합하는 방법에는 여러 가지가 있습니다. 유사점과 차이점을 비교해 보세요

방법:

1, array_merge()

2, '+'

3, array_merge_recursive

유사점과 차이점:

array_merge 단순 merge array

array_merge_recursive는 두 배열을 병합합니다. 배열에 정확히 동일한 데이터가 있는 경우 이를 재귀적으로 병합합니다.

array_combine 및 '+': 두 배열을 병합하고 전자의 값이 새 배열의 키 역할을 합니다

2. 사용자가 제출한 데이터가 정수인지 확인하는 함수를 작성해주세요(데이터 유형에 관계없이 2진수, 8진수, 10진수, 16진수일 수 있음)

답변: 실제로 주요 메소드는 is_int 및 Floor

if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){  
    echo "不是整数";  
}else{  
    echo "是整数";  
}
로그인 후 복사
입니다

3. PHP의 strtolower() 및 strtoupper() 함수로 인해 중국어가 아닌 시스템이 설치된 서버에서 중국어 문자가 잘못된 문자로 변환될 수 있습니다. 유니코드 텍스트와 호환되는 문자열 대소문자 변환을 달성하려면 두 가지 대체 함수를 작성하십시오. 답변: 이유 예: 중국어는 멀티바이트로 구성되어 있는데, 영어 체계에서는 영어 한 글자만 1바이트밖에 안 되기 때문에 시스템은 중국어의 각 바이트에 대해 strtolower() 처리를 하고, 변경된 한자를 이어붙여 합쳐지게 된다. 잘못된 문자(새로 생성된 인코딩 맵에 해당하는 문자는 중국어가 아닐 수 있음)

수동 해결 방법: str_split(string string, intstring, intsplit_length = 1)을 사용하여 중국어를 3바이트로 자르는 것처럼 각 바이트별로 자릅니다. 인식된 바이트가 영문자인 경우 변환됩니다.

<?php  
function mystrtoupper($a){  
    $b = str_split($a, 1);  
    $r = &#39;&#39;;  
    foreach($b as $v){  
        $v = ord($v);  
        if($v >= 97 && $v<= 122){  
            $v -= 32;  
        }  
        $r .= chr($v);  
    }  
    return $r;  
}  
$a = &#39;a中你继续F@#$%^&*(BMDJFDoalsdkfjasl&#39;;  
echo &#39;origin string:&#39;.$a." ";  
echo &#39;result string:&#39;;  
$r = mystrtoupper($a);  
var_dump($r);
로그인 후 복사

4.

PHP의 is_writeable() 함수에는 디렉터리/파일이 쓰기 가능한지 여부를 정확하게 확인할 수 없는 버그가 있습니다. 디렉터리/파일이 완전히 쓰기 가능한지 확인하는 함수를 작성하세요. 답변: 버그는 두 가지 측면에서 존재합니다.

1. windowsns에서 is_writeable() 함수는 파일에 읽기 전용 속성만 있는 경우에만 false를 반환합니다. true가 반환되면 파일에 반드시 쓰기가 가능한 것은 아닙니다.

디렉토리인 경우 해당 디렉토리에 새 파일을 생성하고 파일을 열어 확인합니다.

파일인 경우 파일을 열어(fopen) 파일에 쓰기 가능한지 테스트할 수 있습니다.

2. Unix에서는 PHP 구성 파일에서 safe_mode가 켜져 있으면(safe_mode=on) is_writeable()도 사용할 수 없습니다.

safe_mode가 활성화되어 있는지 확인하려면 구성 파일을 읽어보세요.

/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really can&#39;t write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access   private
* @return   void
*/
if ( ! function_exists(&#39;is_really_writable&#39;))
{
    function is_really_writable($file){
    // If we&#39;re on a Unix server with safe_mode off we call is_writable
    if (DIRECTORY_SEPARATOR == &#39;/&#39; AND @ini_get("safe_mode") == FALSE){
        return is_writable($file);
    }
    // For windows servers and safe_mode "on" installations we&#39;ll actually
    // write a file then read it. Bah...
    if (is_dir($file)){
        $file = rtrim($file, &#39;/&#39;).&#39;/&#39;.md5(mt_rand(1,100).mt_rand(1,100));
        if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE){
            return FALSE;
        }
        fclose($fp);
        @chmod($file, DIR_WRITE_MODE);
        @unlink($file);
        return TRUE;
    } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
        return FALSE;
    }
    fclose($fp);
    return TRUE;
    }
}
로그인 후 복사

5.

PHP의 chmod() 함수에 버그가 있어 설정 성공을 보장할 수 없습니다. 지정된 경로에 디렉터리/파일을 생성하고 권한 마스크가 올바르게 설정될 수 있는지 확인하는 함수를 작성하세요.답변: 저도 답을 못찾겠어요

6 .

PHP는 업로드된 파일 정보 배열에서 $_FILES['type'] 파일 형식을 처리합니다. 클라이언트 브라우저에서 제공하는 정보일 수 있습니다. 해커가 업로드한 이미지 파일 형식을 확인하는 기능을 작성하세요. 사용자는 확실하고 신뢰할 수 있습니다. 답변: 업로드된 이미지 유형을 확인하기 위해 getimagesize를 사용하는 것이 $_FILES 함수 유형보다 더 안정적입니다.

동일한 파일에 대해 브라우저에 따라 PHP에서 반환하는 유형이 다릅니다.

해커가 위장된 이미지 접미사가 포함된 실행 파일을 서버에 제출하는 데 사용될 수 있습니다.

getimagesize() 함수를 사용하면 업로드된 파일 형식을 확인할 수 있습니다. 아바타 파일인 경우 이와 같은 배열이 반환됩니다.

Array(
    [0] => 331
    [1] => 234
    [2] => 3
    [3] => width="331" height="234"
    [bits] => 8
    [mime] => image/png

);
로그인 후 복사

getimagesize() 함수가 이와 같은 배열을 반환하면 업로드된 파일은 아바타 파일입니다. 인덱스 2의 표현 유형은

1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(인텔 바이트 순서), 8 = TIFF(모토로라 바이트 순서)입니다. , 9 = JPC, 10 = JP2, 11 = JPX, 12 =JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM,

이를 사용하여 업로드되는 아바타 유형을 제한할 수 있습니다

<?php
    $file=$_FILES[&#39;file&#39;];
    if(!empty($file))
    {
       var_dump($file);
       var_dump(getimagesize($file["tmp_name"]));
    }   
?>
로그인 후 복사

7.

PHP는 데이터의 URL을 인코딩하여 Javascript와의 데이터 상호 작용을 구현합니다. 그러나 일부 특수 문자의 인코딩 및 디코딩 규칙은 Javascript의 규칙과 다릅니다. 이 차이점을 자세히 설명하고 UTF-8 문자 집합으로 데이터를 작성해 주세요. PHP의 인코딩 및 디코딩 기능과 Javascript의 인코딩 및 디코딩 기능을 실행하여 PHP로 인코딩된 데이터가 Javascript로 올바르게 디코딩될 수 있고 Javascript로 인코딩된 데이터가 PHP로 올바르게 디코딩될 수 있는지 확인하세요. 답변:

<?php
 $str = &#39;思源博客siyuantlw/tlw/sy/俺只是一个打酱油的&#39;;
 $str = iconv("GB2312",&#39;UTF-8&#39;,$str);
 $str = urlencode($str); 
?>
로그인 후 복사

//js decodeURIComponent가 보이지 않습니다. GB2312 인코딩 형식을 지원하려면 utf-8로 변환해야 하며, 문자열에 공백이 있으면 + 기호

<html>
 <script>
  var ds = &#39;<?php echo $str;?>&#39;;
  var dddd= decodeURIComponent (ds);
  alert(dddd);
 </script>
</html>
로그인 후 복사
로 변환됩니다.

위 내용은 7가지 고전적인 PHP 인터뷰 질문(답변 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!