Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen von PHP-Kerntechnologieproblemen in PHP-Interviewfragen

Teilen von PHP-Kerntechnologieproblemen in PHP-Interviewfragen

黄舟
黄舟Original
2017-11-10 10:02:232453Durchsuche

In unserem vorherigen Artikel haben wir eine Zusammenfassung von PHP-Interviewfragen sowie eine Zusammenfassung von Thinkphp- und Notizenfragen in PHP-Interviewfragen vorgestellt. Diese sind für Anfänger und Freunde mit wenig Berufserfahrung ausreichend oder sogar Freunde, die seit drei oder vier Jahren arbeiten, die PHP-Interviewfragen, die wir zuvor vorgestellt haben, reichen offensichtlich nicht aus, deshalb werden wir heute die PHP-Kerntechnologie in den PHP-Interviewfragen zusammenfassen!

PHP-Kerntechnologie

1 Bitte schreiben Sie einen Teil PHP-Code, um sicherzustellen, dass mehrere Prozesse gleichzeitig erfolgreich dieselbe Datei schreiben können Zeit

Kernidee: Sperren

<?php
    $fp = fopen("lock.txt","w+");    
if (flock($fp,LOCK_EX)) {        //获得写锁,写数据
        fwrite($fp, "write something");        // 解除锁定
        flock($fp, LOCK_UN);
    } else {        echo "file is locking...";
    }
    fclose($fp);?>

2.Schreiben Sie eine Funktion, um Dateien so effizient wie möglich von einer Standard-URL abzurufen mögliche Erweiterung, zum Beispiel: http://www.php.cn/abc/de/fg.php?id=1 PHP oder .php müssen entfernt werden

<?php
    // 方案一
    function getExt1($url){
        $arr = parse_url($url);        
//Array ( [scheme] => http [host] => www.php.cn [path] => /abc/de/fg.php [query] => id=1 )

        $file = basename($arr[&#39;path&#39;]);
        $ext = explode(&#39;.&#39;, $file);        
return $ext[count($ext)-1];
    }    // 方案二
    function getExt2($url){
        $url = basename($url);
        $pos1 = strpos($url,&#39;.&#39;);
        $pos2 = strpos($url,&#39;?&#39;);        
if (strstr($url,&#39;?&#39;)) {            
return substr($url,$pos1+1,$pos2-$pos1-1);
        } else {            
return substr($url,$pos1);
        }

    }

    $path = "http://www.php.cn/abc/de/fg.php?id=1";    
echo getExt1($path);    
echo "<br />";    
echo getExt2($path);?>

Verwandt Fragen: Verwenden Sie mehr als fünf Methoden, um die Erweiterung einer Datei zu erhalten: dir/upload.image.jpg Um .jpg oder jpg herauszufinden, müssen Sie die PHP-eigene Verarbeitungsfunktion verwenden wiederholt und kann in eine Funktion gekapselt werden, zum Beispiel get_ext1(filename), getext2(file_name)

3. Beschreiben Sie kurz das Implementierungsprinzip der unendlichen Klassifizierung im Forum

Erstellen Sie eine Kategorietabelle wie folgt:

CREATE TABLE category(
cat_id smallint unsigned not null auto_increment primary key comment&#39;类别ID&#39;,
cat_name VARCHAR(30)NOT NULL DEFAULT&#39;&#39;COMMENT&#39;类别名称&#39;,
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT&#39;类别父ID&#39;)engine=MyISAM charset=utf8;

Schreiben Sie eine Funktion, die rekursiv durchlaufen wird, um eine unendliche Klassifizierung zu erreichen

<?php
    function tree($arr,$pid=0,$level=0){        
static $list = array();        
foreach ($arr as $v) {            //如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
            if ($v[&#39;parent_id&#39;] == $pid) {
                $v[&#39;level&#39;] = $level;
                $list[] = $v;
                tree($arr,$v[&#39;cat_id&#39;],$level+1);
            }
        }        
return $list;
    }
?>

4. Schreiben Sie einen regulären Ausdruck, um den Inhalt der Webseite zu filtern. Alle JS/VBS-Skripte (d. h. entfernen Sie das Skript-Tag und seinen Inhalt)

Javascript-Skriptreferenz filtern:

<?php
    header("content-type:text/html;charset=utf-8");

    $script = "以下内容不显示:<script type=&#39;text/javascript&#39;>alert(&#39;cc&#39;);</script>";
    $pattern = &#39;/<script[^>]*?>.*?</script>/si&#39;;    
echo preg_replace($pattern, "脚本内容", $script);//以下内容不显示:脚本内容
?>

Schreiben Sie ein Skript, das mehrere PHP-Funktionen in Ebenenverzeichnissen erstellen kann

<?php
    /**
     * 创建多级目录
     * @param $path string 要创建的目录
     * @param $mode int 创建目录的模式,在windows下可忽略
     */
    function create_dir($path,$mode = 0777)
    {        if (is_dir($path)) {            # 如果目录已经存在,则不创建
            echo "该目录已经存在";
        } else {            # 不存在,创建
            if (mkdir($path,$mode,true)) {                echo "创建目录成功";
            } else {                echo "创建目录失败";
            }
        }
    }?>

6. Was ist der Garbage Collection-Mechanismus von PHP?

PHP kann den Speicher automatisch verwalten und die Reinigung ist kein Objekt mehr.

PHP verwendet einen einfachen Garbage-Collection-Mechanismus namens Referenzzählung. Jedes Objekt enthält einen Referenzzähler und jede mit dem Objekt verbundene Referenz erhöht den Zähler um eins. Wenn die Referenz den Wohnraum verlässt oder auf NULL gesetzt wird, wird der Zähler um 1 dekrementiert. Wenn der Referenzzähler eines Objekts Null erreicht, weiß PHP, dass Sie das Objekt nicht mehr verwenden müssen und gibt den von ihm belegten Speicherplatz frei.

7. Schreiben Sie eine Funktion, die alle Dateien und Unterordner in einem Ordner durchlaufen kann

<?php
    function my_scandir($dir){
        $files = array();        
if(is_dir($dir)){            
if ($handle = opendir($dir)) {                
while (($flie = readdir($handle))!== false) {                    
if ($flie!="." && $file!="..") {                        
if (is_dir($dir."/".$file)) {
                            $files[$file] = my_scandir($dir."/".$file);
                        } else {
                            $files[] = $dir."/".$file;
                        }
                    }
                }
                closedir($handle);                
return $files;
            }
        }
    }?>

8. So ermitteln Sie ein Zeichen in PHP string ist ein gültiges Datumsmuster: 2007-03-13 13:13:13. Der Code darf nicht mehr als 5 Zeilen umfassen

<?php
    function checkDateTime($data){        
if (date(&#39;Y-m-d H:i:s&#39;,strtotime($data)) == $data) {            
return true;
        } else {            
return false;
        }
    }    // 示例
    $data = &#39;2015-06-20 13:35:42&#39;;
    var_dump(checkDateTime($data));//bool(true)

    $data = &#39;2015-06-36 13:35:42&#39;;
    var_dump(checkDateTime($data));//bool(false)?>

9. Wie erhalte ich den Schlüsselwert eines Arrays in PHP?

Verwenden Sie key(), um den Schlüsselnamen des aktuellen Elements im Array abzurufen, und verwenden Sie current(), um den Wert des aktuellen Elements zurückzugeben.

Verwenden Sie array_keys(), um alle Schlüsselnamen im Array abzurufen.
Verwenden Sie die foreach-Struktur foreach($arr as key=>value), um den Schlüsselnamen bzw. den Schlüsselwert über Schlüssel und Wert zu erhalten.

10. Wenn es sich bei der Vorlage um eine Smart-Vorlage handelt. So verwenden Sie eine Abschnittsanweisung, um eine Gruppe namens $data anzuzeigen. Zum Beispiel:

$data=array(0=>array(&#39;id&#39;=>8,&#39;name&#39;=>&#39;name1&#39;),1=>array(&#39;id&#39;=>10,&#39;name&#39;=>&#39;name2&#39;),2=>array(&#39;id&#39;=>15,&#39;name&#39;=>&#39;name3&#39;)
);

Den Code auf die Vorlagenseite schreiben? Wie wird es angezeigt, wenn die foreach-Anweisung verwendet wird?

Abschnittsanweisung verwenden:

<{section name=test loop=$data start=0 step=1}>
id:<{$data[test].id}><br/>
name:<{$data[test].name}>
<br/>
<br/>
<{sectionelse}>
数组为空
<{/section}>
Foreach-Anweisung verwenden:

<{foreach from=$data item=test}>
id:<{$test.id}><br/>
name:<{$test.name}>
<br/>
<br/>
<{foreachelse}>
数组为空
<{/foreach}>

Zusammenfassung:

In diesem Artikel fassen wir für Sie hauptsächlich die Kerntechnologie von PHP in PHP-Interviewfragen zusammen. Für Anfänger mag es etwas ausführlich sein, aber für erfahrene Freunde ist dies in der Tat eine gute Wahl. Hoffe das hilft!

Verwandte Empfehlungen:

Eine Zusammenfassung der schriftlichen Testfragen in PHP-Interviewfragen


Die umfassendste Zusammenfassung der PHP-Interviewfragen und -antworten im Jahr 2017


Eine Zusammenfassung der Thinkphp-Fragen in PHP-Interviewfragen

Rekrutierungssaison 2017: Super Zusammenfassung von PHP-Interviewfragen!

Das obige ist der detaillierte Inhalt vonTeilen von PHP-Kerntechnologieproblemen in PHP-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn