分类目录归档:PHP

php连接数据库,不用thinkphp框架

<?php
/**
 * Created by PhpStorm.
 * User: yanjin
 * Date: 2021/6/26
 * Time: 10:04
 */
$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名

$dbName='spider';    //使用的数据库
$user='root';      //数据库连接用户名
$pass='root';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";


try {
    // $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    // echo "连接成功<br/>";
    /*你还可以进行一次搜索操作
    foreach ($dbh->query('SELECT * from FOO') as $row) {
        print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
    }
    */
    // $dbh = null;
    $dbh = new PDO($dsn, $user, $pass);
    $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE , PDO::FETCH_ASSOC );
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}
//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:
// $db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));

php psr4规范

php psr4规范

参考文章:
1、类、方法、常量的定义和副操作(输出结果,处理数据)只能同时存在一种
2、命名空间和类必须遵循PSR-4自动加载器标准。(大驼峰,文件名和命名空间大小写一致)
3、类、成员方法大括号要单独一行
4、类名采用大驼峰,变量、方法名、函数名采用小驼峰,常量采用大写+下划线
5、控制语法小括号外侧1个空格,第一个大括号跟在小括号同行
6、php文件以<?php开头,代码最后空一行,?>不写
7、缩进采用4个空格
8、函数,方法的多个参数,逗号后要留1个空格
9、关键字小写
10、每一行不超过80个字符,结尾不要有空格
11、文件最后留一行空格
12、必要注释和空行,提高可读性
————————————————
版权声明:本文为CSDN博主「古月的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34345149/article/details/122260379

php:get_file_contents的json获取失败

访问xxx路径会返回json格式的数据,简单点,我用file_get_contents进行获取,发现解析不出来,显示是string类型数据,非json格式,也就是个格式不对。
但是我直接拿路径返回的数据解析是ok的,也就是说file_get_contents获取的数据有所不同。
后来查了下资料,提示说file_get_contents得到的数据前面有三个看不到的字符,所以代码修改如下,仅供参考:

$url = “xxx”; //请求的路径
$result = substr(file_get_contents($url),3);
$result = json_decode($result);
return $result;

去掉html中的字符,变成纯文本

$istop_message['narong'] = htmlspecialchars_decode($istop_message['narong']);
$istop_message['narong'] = strip_tags($istop_message['narong'],'');

第一步先把富媒体中的字符变成html的,然后在通过strip_tags去掉html标识

tp5 ,多维关联数组volist,活到老学到老,狗一条

多维关联数组的volist,试了半天,狗

数组格式如下:

array(4) {
["技术合同登记平台"] => array(3) {
[0] => array(10) {
["id"] => int(58)
["admin_id"] => int(1)
["platform"] => string(2) "16"
["tongji_name"] => string(18) "项目申报数据"
["tongji"] => string(3) "888"
["listorder"] => int(0)
["status"] => int(1)
["create_time"] => int(1647931596)
["update_time"] => int(1647931596)
["delete_time"] => int(0)
}

继续阅读

paginate方法,分页

list_rows,每页数量

type:分页类名

* @param int|null $listRows 每页数量
* @param bool $simple 简洁模式
* @param array $config 配置参数
* page:当前页,
* path:url路径,
* query:url额外参数,
* fragment:url锚点,
* var_page:分页变量,
* list_rows:每页数量
* type:分页类名,
* namespace:分页类命名空间

 

php7编译参数

先批量yum:

yum install libxml2 libxml2-devel openssl-devel curl curl-devel turbojpeg-devel libjpeg-turbo-devel libpng-devel libXpm-devel freetype-devel libXpm-devel libicu-devel xslt libxslt-devel -y

centos8不更新了,centos7的yum还能用,后面用ubuntu吧.

./configure –prefix=/home/system/php \
–with-mysqli \
–enable-fpm \
–with-pdo-mysql=mysqlnd \
–with-iconv-dir \
–with-freetype-dir \
–with-jpeg-dir \
–with-png-dir \
–with-zlib \
–with-libxml-dir \
–enable-xml \
–enable-bcmath \
–enable-shmop \
–enable-sysvsem \
–enable-inline-optimization \
–with-curl \
–enable-mbregex \
–enable-mbstring \
–enable-intl \
–enable-ftp \
–with-gd \
–with-openssl \
–with-mhash \
–enable-pcntl \
–enable-sockets \
–with-xmlrpc \
–enable-zip \
–enable-soap \
–with-gettext \
–enable-opcache \
–with-xsl

PHP的PDF扩展库TCPDF将中文字体设置为内嵌字体的方法

1. 下载要设置的字体,如名为simfang.ttf,放在./vendor/tecnickcom/tcpdf/tools目录中

2.在tools目录中按住shift,点击鼠标右键,点击“在此处打开命令行窗口”,执行语句

1php ./tcpdf_addfont.php -b -t simfang -i simfang.ttf

 便会在./vendor/tecnickcom/tcpdf/fonts/文件夹下面会生成simfang.ctg.z , simfang.php和simfang.z几个文件

3.在调用TCPDF的方法中设置仿宋字体

$pdf = new \Tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 // 设置字体
$pdf->SetFont('simfang', '', 14, '', false);

php的unserialize()返回后的结果分析

php的unserialize()返回后的结果

a:4:{
s:13:”module_rename”;a:1:{i:80;s:6:”档案”;}
s:8:”opentype”;a:1:{i:80;s:3:”tab”;}
s:10:”show_field”;a:1:{i:80;s:9:”from_units”;}
s:11:”union_field”;a:1:{i:80;s:10:”from_units”;}
}

a:4中的a表示4个数组
s:13:”module_rename”;a:1:{i:80;s:6:”档案”;}
s表示字符串,长度13,module_rename是13个字符,因为是数组,所以这个是键值

a:1:{i:80;s:6:”档案”;}是value

php的多维数组排序,还是给出官方的例子,加深记忆

示例 #3 对数据库结果进行排序

本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。

例子中的数据如下:

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

本例中将把 volume 降序排列,把 edition 升序排列。

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。<?php
// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}


// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

数据集合现在排好序了,结果如下:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7