技术圈开发者交流群:

[PHP函数每日一例] substr_cn 字符串截取支持中文html

字符串截取支持中文html

/**
 * 清除html标签,字符串截取
 * 支持中文
 * @author TechLee
 */
function substr_cn($str, $length = 0, $start = 0, $charset = "utf-8", $suffix = true)
{
    $str = function_exists('clear_tags') ? clear_tags($str) : strip_tags($str);
    if ($length > 0 && mb_strlen($str, $charset) <= $length) {
        return $str;
    }
    $slice = $length > 0 ? mb_substr($str, $start, $length, $charset) : $str;
    if ($suffix) {
        return $slice . "…";
    }
    return $slice;
}

echo substr_cn('PHP是世界上最好的语言,是宇宙第一语言!', 10);
// 输出:
// PHP是世界上最好的…


PHP 2017年09月12日 30303

[PHP函数每日一例] clear_tags 清除HTML标签

单纯用php原生函数 strip_tags 清除仍有残留和空格,下面的方法完美解决,将html转换为纯文本。

/**
 * 清除html标签
 */
function clear_tags($str)
{
    $str = strip_tags($str);
    //首先去掉头尾空格
    $str = trim($str);
    $str = preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", "", strip_tags($str));
    //接着去掉两个空格以上的
    $str = preg_replace('/\s(?=\s)/', '', $str);
    //最后将非空格替换为一个空格
    $str = preg_replace('/[\n\r\t]/', ' ', $str);
    return $str;
}

// echo clear_tags('<p>Hello,World!!!</p>');
// 输出:
// Hello,World!!!


PHP 2017年09月11日 25082

基于Laravel5.5的模块化开发

laravel 安装后是单模块应用,但通常情况下,我们的项目往往会有很多模块,如果按单模块去做,文件目录会异常庞大,不利于维护,耦合性太大。 那么下面就详细说一下利用最新laravel5.5如何进行分模块开发。

composer create-project --prefer-dist laravel/laravel ./
PHP 2017年09月11日 974

php格式化输出json

格式化输出json,php版本要求5.4或更高

    /**
     * 浏览器友好的变量输出json格式
     * @param mixed     $var 变量
     * @param boolean   $echo 是否输出 默认为true 如果为false 则返回输出字符串
     * @return void|string
     * @author TechLee
     */
    function ddj($var, $echo = true)
    {
        header('content-type:application/json;charset=utf8');
        $output = json_encode($var, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
        if ($echo) {
            echo ($output);
            return;
        } else {
            return $output;
        }
    }


PHP 2017年09月08日 25974

php格式化输出代替var_dump/print_r

PHP输出变量函数print_r和var_dump,没有格式化,易读性太差

下面结合thinkphp礼包dump函数改进的

    /**
     * 浏览器友好的变量输出
     * @param mixed     $var 变量
     * @param boolean   $echo 是否输出 默认为true 如果为false 则返回输出字符串
     * @param string    $label 标签 默认为空
     * @return void|string
     * @author TechLee
     */
    function ddp($var, $echo = true, $label = null, $flags = ENT_SUBSTITUTE)
    {
        $label = (null === $label) ? '' : rtrim($label) . ':';
        ob_start();
        var_dump($var);
        $output = ob_get_clean();
        $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output);

        if (!extension_loaded('xdebug')) {
            $output = htmlspecialchars($output, $flags);
        }
        $output = '' . $label . $output . '';

        if ($echo) {
            echo ($output);
            return;
        } else {
            return $output;
        }
    }


PHP 2017年09月08日 26253

PHP批量检查并清除bom头

Cannot send session cache limiter - headers already sent (output started at...) on line ...

在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)

<?php
if (isset($_GET['dir'])) {
    // config the basedir
    $basedir = $_GET['dir'];
} else {
    $basedir = '.';
}

$auto = 1;

checkdir($basedir);
function checkdir($basedir)
{
    if ($dh = opendir($basedir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                if (!is_dir($basedir . "/" . $file)) {
                    // 如果是文件
                    echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " 
";
                } else {
                    $dirname = $basedir . "/" . $file; // 如果是目录
                    checkdir($dirname); // 递归
                }
            }
        }
        closedir($dh);
    }
}
function checkBOM($filename)
{
    global $auto;
    $contents   = file_get_contents($filename);
    $charset[1] = substr($contents, 0, 1);
    $charset[2] = substr($contents, 1, 1);
    $charset[3] = substr($contents, 2, 1);
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
        // BOM
        // 的前三个字符的ASCII
        // 码分别为
        // 239
        // 187
        // 191
        if ($auto == 1) {
            $rest = substr($contents, 3);
            rewrite($filename, $rest);
            return ("");
        } else {
            return ("");
        }
    } else {
        return ("BOM Not Found.");
    }

}
function rewrite($filename, $data)
{
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}


PHP 2017年08月26日 20204

PHP7.1中AES加密解密方法 mcrypt_module_open()替换方案


mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。


PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.

/**
 * [AesSecurity aes加密,支持PHP7.1]
 */
class AesSecurity
{
    /**
     * [encrypt aes加密]
     * @param    [type]                   $input [要加密的数据]
     * @param    [type]                   $key   [加密key]
     * @return   [type]                          [加密后的数据]
     */
    public static function encrypt($input, $key)
    {
        $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
        $data = base64_encode($data);
        return $data;
    }
    /**
     * [decrypt aes解密]
     * @param    [type]                   $sStr [要解密的数据]
     * @param    [type]                   $sKey [加密key]
     * @return   [type]                         [解密后的数据]
     */
    public static function decrypt($sStr, $sKey)
    {
        $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA);
        return $decrypted;
    }
}


可据需求,自行改编。

PHP 2017年08月16日 3637

史上最全PHP常见开发工具 视频教程 文档资料

[PHP常见开发工具]

php开发工具众多,主要有两类,一类是普通文本编辑器,另一类是集成开发工具(IDE)。

普通文本编辑器:

    1、Sublime Text

    2、微软的跨平台代码编辑器 visual studio code

    3、Atom

    4、还有notepad++,editplus,vi等等不再列举

集成开发工具(IDE)

    1、zend官方的zend studio

    2、JetBrains 公司的PhpStom

    3、netbeans IED for php

    4、eclipse for php

    ……

[流行的MVC]

1、ThinkPHP 国人自己的

2、laravel 以优雅著称

3、Yii 快速、安全、专业 的 PHP 框架

4、zend framework  zend自家的

5、Yaf(Yet Another Framework)  高性能的C语言编写的框架

6、phalcon使用 C 扩展编写、针对高性能优化的 PHP 框架

7、CodeIgniter、CakePHP、Symfony 等等

[视频教程]

    1、慕课网-程序员的梦工厂

            慕课网(IMOOC)是IT技能学习平台。慕课网(IMOOC)提供了丰富的移动端开发、php开发、web前端、android开发以及html5等视频教程资源公开课。并且富有交互性及趣味    性,你还可以和朋友一起编程。

    2、网易云课堂 - 领先的实用技能学习平台

            云课堂是网易公司研发的一款大型在线教育平台服务,该平台面向学习者提供海量免费、优质课程,创新的个性化学习体验, 自由开放的交流互动环境。继网易公开课后,云课堂是网易公司在教育领域的又一重量级产品。

    3、腾讯课堂_专业的在线教育平台

            腾讯课堂-腾讯推出的专业在线教育平台,聚合大量优质教育机构和名师,下设职业培训、公务员考试、托福雅思、考证考级、英语口语、中小学教育等众多在线学习精品课程,打造老师在线上课教学、学生及时互动学习的课堂。腾讯课堂,学习成就梦想!

    4、极客学院IT在线教育平台-中国专业的IT职业在线教育平台

            极客学院作为中国专业IT职业在线教育平台,拥有海量高清IT职业课程,涵盖30+个技术领域,如Android,iOS ,Flash,Java,Python,HTML5,Swift,Cocos2dx等视频教程.根据IT在线学习特点,极客学院推出IT学习知识体系图,IT职业学习实战路径图,帮助IT学习者从零基础起步,结合IT实战案例演练,系统学习,助你快速成为IT优秀技术人才!

    5、优酷学堂

            优质课程、智能问答、趣味实践、随心笔记、教育、优酷公开课、计算机开发、交互视觉设计、Udacity、it、互联网、会计、视频教程、交流互动、免费、名师、实用、培训


PHP 2017年06月10日 49547
鄂ICP备19028750号-1 @copyright 2024 tech1024.com