Maison >développement back-end >tutoriel php >Partage de questions sur la technologie de base PHP dans les questions d'entretien PHP

Partage de questions sur la technologie de base PHP dans les questions d'entretien PHP

黄舟
黄舟original
2017-11-10 10:02:232488parcourir

Dans notre article précédent, nous avons présenté un résumé des questions d'entretien PHP, ainsi qu'un résumé des questions thinkphp et de prise de notes dans les questions d'entretien PHP. Elles sont suffisantes pour les novices et les amis ayant peu d'expérience professionnelle. ou même des amis qui travaillent depuis trois ou quatre ans, les questions d'entretien PHP que nous avons présentées précédemment ne suffisent évidemment pas, nous allons donc résumer aujourd'hui la technologie de base PHP dans les questions d'entretien PHP !

Technologie de base PHP

1 Veuillez écrire un morceau de code PHP pour vous assurer que plusieurs processus peuvent écrire le même fichier avec succès en même temps. time

Idée principale : Lock

<?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.Écrivez une fonction pour récupérer des fichiers à partir d'une URL standard aussi efficacement que Extension possible, par exemple : http://www.php.cn/abc/de/fg.php?id=1 Vous devez retirer php ou .php

<?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);?>

Questions connexes : Utilisez plus de cinq méthodes pour obtenir l'extension d'un fichier. Les exigences sont : dir/upload.image.jpg Pour connaître .jpg ou jpg, vous devez utiliser la propre fonction de traitement de PHP pour le traitement. être évidemment répété et peut être encapsulé dans une fonction. Par exemple, get_ext1(filename), getext2(file_name)

3 Décrivez brièvement le principe de mise en œuvre de la classification infinie dans le forum

Créez une table de catégories comme suit :

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;

Écrivez une fonction à parcourir de manière récursive pour obtenir une classification infinie

<?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. Écrivez une expression régulière pour filtrer le contenu de la page Web Tous les scripts JS/VBS (c'est-à-dire supprimez la balise de script et son contenu)

Filtrer la référence du script javascript :

<?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);//以下内容不显示:脚本内容
?>

5. Écrivez un script qui peut créer plusieurs fonctions PHP pour les répertoires de niveau

<?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. Qu'est-ce que le mécanisme de récupération de place de PHP ? 🎜>PHP peut gérer automatiquement la mémoire, et le nettoyage n'est plus un objet nécessaire.

PHP utilise un mécanisme simple de récupération de place appelé comptage de références. Chaque objet contient un compteur de références, et chaque référence connectée à l'objet augmente le compteur de un. Lorsque la référence quitte l'espace de vie ou est définie sur NULL, le compteur est décrémenté de 1. Lorsque le compteur de références d'un objet atteint zéro, PHP sait que vous n'avez plus besoin d'utiliser cet objet et libère l'espace mémoire qu'il occupe.


7. Écrivez une fonction qui peut parcourir tous les fichiers et sous-dossiers d'un dossier

<?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 Comment déterminer un caractère en PHP. la chaîne est un modèle de date légal : 2007-03-13 13:13:13. Le code ne doit pas dépasser 5 lignes

<?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. Comment obtenir la valeur clé d'un tableau en PHP ? Utilisez key() pour obtenir le nom de clé de l'élément actuel dans le tableau, et utilisez current() pour renvoyer la valeur de l'élément actuel.

Utilisez array_keys() pour obtenir tous les noms de clés du tableau.

Utilisez la structure foreach foreach($arr as key=>value) pour obtenir le nom et la valeur de la clé respectivement via la clé et la valeur.

10. Si le modèle est un modèle intelligent. Comment utiliser l'instruction section pour afficher un groupe nommé $data. Par exemple :

$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;)
);
Écrire le code sur la page du modèle ? Comment l'afficher si vous utilisez l'instruction foreach ?


Utiliser l'instruction de section :

Utiliser l'instruction foreach :
<{section name=test loop=$data start=0 step=1}>
id:<{$data[test].id}><br/>
name:<{$data[test].name}>
<br/>
<br/>
<{sectionelse}>
数组为空
<{/section}>

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

Résumé : Dans cet article, nous résumons principalement pour vous la technologie de base de PHP dans les questions d'entretien PHP. Cela peut être un peu approfondi pour les novices, mais pour les amis expérimentés, c'est en effet un bon choix. ! J'espère que cela aide!

Recommandations associées :

Un résumé des questions du test écrit dans les questions d'entretien PHP


Le résumé le plus complet des questions et réponses d'entretien PHP en 2017


Un résumé des questions Thinkphp dans les questions d'entretien PHP

Saison de recrutement 2017 : Super résumé des questions d'entretien PHP !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn