Heim  >  Artikel  >  Backend-Entwicklung  >  Sieben klassische PHP-Interviewfragen (mit Antworten)

Sieben klassische PHP-Interviewfragen (mit Antworten)

藏色散人
藏色散人nach vorne
2021-05-26 13:52:054930Durchsuche

Dieser Artikel stellt Ihnen sieben klassische PHP-Interviewfragen vor (mit Antworten). Ich hoffe, dass er für alle hilfreich ist.

1. Es gibt verschiedene Möglichkeiten, zwei Arrays zusammenzuführen. Versuchen Sie, ihre Ähnlichkeiten und Unterschiede zu vergleichen Zusammenführen von Arrays

array_merge_recursive führt zwei Arrays zusammen, wenn das Array genau dieselben Daten enthält, führen Sie sie rekursiv zusammen.

array_combine und '+': Führen Sie zwei Arrays zusammen, und der Wert des ersteren dient als Schlüssel des neuen Arrays

2. Bitte schreiben Sie eine Funktion, um zu überprüfen, ob die vom Benutzer übermittelten Daten eine Ganzzahl sind (unabhängig vom Datentyp können sie binär, oktal, dezimal, hexadezimal sein)

Antwort: Tatsächlich sind die Hauptmethoden is_int und floor

if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){  
    echo "不是整数";  
}else{  
    echo "是整数";  
}

3.

Die Funktionen strtolower () und strtoupper () von PHP können dazu führen, dass chinesische Zeichen auf Servern mit nicht-chinesischen Systemen in verstümmelte Zeichen umgewandelt werden. Bitte schreiben Sie zwei alternative Funktionen, um eine mit Unicode-Text kompatible Konvertierung der Zeichenkette zu erreichen.

Antwort: Grund Ja: Chinesisch besteht aus mehreren Bytes, und nur ein einziges englisches Zeichen im englischen System hat nur ein Byte. Daher führt das System für jedes chinesische Byte eine strtolower ()-Verarbeitung durch und die geänderten chinesischen Zeichen werden zusammengefügt Zusammen werden sie verstümmelte Zeichen (die Zeichen, die der neu generierten Codierungszuordnung entsprechen, sind möglicherweise nicht chinesisch)

Manuelle Lösung: Verwenden Sie str_split (string string, intstring, intsplit_length = 1), um jedes Byte zu schneiden, so dass Chinesisch in drei Bytes geschnitten werden kann. Handelt es sich bei den erkannten Bytes um englische Buchstaben, werden diese konvertiert.

<?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.

Es gibt einen Fehler in der PHP-Funktion is_writeable(), der nicht genau bestimmen kann, ob ein Verzeichnis/eine Datei beschreibbar ist.

Antwort: Der Fehler besteht in zwei Aspekten.

1. In Windowsns gibt die Funktion is_writeable() nur dann false zurück, wenn die Datei nur ein schreibgeschütztes Attribut hat. Wenn true zurückgegeben wird, ist die Datei nicht unbedingt beschreibbar.

Wenn es sich um ein Verzeichnis handelt, erstellen Sie eine neue Datei im Verzeichnis und prüfen Sie, indem Sie die Datei öffnen.

Wenn es sich um eine Datei handelt, können Sie testen, ob die Datei beschreibbar ist, indem Sie die Datei öffnen (fopen).

2. Wenn in Unix der Safe_mode in der PHP-Konfigurationsdatei aktiviert ist (safe_mode=on), ist is_writeable() ebenfalls nicht verfügbar.

Lesen Sie die Konfigurationsdatei, um zu sehen, ob der Safe_Mode aktiviert ist.

/**
* 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.

Es liegt ein Fehler in der Funktion chmod () von PHP vor und es kann nicht garantiert werden, dass die Einstellung erfolgreich ist. Bitte schreiben Sie eine Funktion zum Erstellen eines Verzeichnisses/einer Datei unter dem angegebenen Pfad und stellen Sie sicher, dass die Berechtigungsmaske korrekt festgelegt werden kann

Antwort: Ich kann die Antwort auch nicht finden

6 .

PHP verarbeitet den Dateityp $_FILES ['type'] im Array mit den hochgeladenen Dateiinformationen. Es handelt sich möglicherweise um von Hackern gefälschte Informationen Der Benutzer ist authentisch und zuverlässig

Antwort: Die Verwendung von getimagesize zur Bestimmung des Typs der hochgeladenen Bilder ist zuverlässiger als der Typ der $_FILES-Funktion.

Für dieselbe Datei ist der von PHP bei Verwendung verschiedener Browser zurückgegebene Typ unterschiedlich stellt den Typ bereit,

Es wird von Hackern verwendet, um eine ausführbare Datei mit einem getarnten Bildsuffix an den Server zu senden.

Sie können die Funktion getimagesize() verwenden, um den Typ der hochgeladenen Datei zu bestimmen. Wenn es sich um eine Avatar-Datei handelt, wird ein Array wie dieses zurückgegeben.

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

);

Wenn die Funktion getimagesize() ein Array wie dieses zurückgibt, bedeutet dies, dass die Hochgeladen ist eine Avatar-Datei. Der Darstellungstyp mit Index 2

1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Intel-Byte-Reihenfolge), 8 = TIFF (Motorola-Byte-Reihenfolge), 9 = JPC, 10 = JP2, 11 = JPX, 12 =JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM,

Sie können dies verwenden, um den Typ des hochgeladenen Avatars einzuschränken

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

7 .

PHP implementiert die Dateninteraktion mit Javascript, indem es die URL der Daten kodiert. Allerdings unterscheiden sich die Kodierungs- und Dekodierungsregeln für einige Sonderzeichen von denen von Javascript. Bitte erläutern Sie diesen Unterschied im Detail und schreiben Sie für die Daten im UTF-8-Zeichensatz. Führen Sie die Kodierungs- und Dekodierungsfunktionen von PHP und die Kodierungs- und Dekodierungsfunktionen von Javascript aus, um sicherzustellen, dass PHP-kodierte Daten von Javascript korrekt dekodiert werden können und Javascript-kodierte Daten von PHP korrekt dekodiert werden können. Antwort:

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

//js decodeURIComponent scheint nicht Um das GB2312-Codierungsformat zu unterstützen, muss es in utf-8 konvertiert werden. Wenn die Zeichenfolge dann Leerzeichen enthält, wird sie in das +-Zeichen konvertiert

Das obige ist der detaillierte Inhalt vonSieben klassische PHP-Interviewfragen (mit Antworten). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen