详解 HTMLPurifier addElement 方法

代码老兵 技术 17
HTMLPurifier 中的 addElement 方法允许你 自定义 HTML 元素的定义,即指定某个元素可以包含哪些其他元素,定义元素的类型、属性等。这对于修改 HTMLPurifier 默认行为非常有用。1. addElement 方法概述addElement 方法允许你在 HTMLPurifier 配置中添加或修改特定元素的 标签定义。通过 addElement,你可以自定义 HTML...

PHP Aho-Corasick 算法同时匹配多个关键字

代码老兵 技术 20
一、传统做法(循环匹配)最常见写法:foreach ($keywords as $word) { if (mb_strpos($text, $word) !== false) { // 命中 }}假设:关键词数量:M文章长度:N时间复杂度接近:O(M × N)如果:文章 10KB关键词 5000 个那就是:5000 × 10000 = 5000万次字符比较而且还要重复扫描文本。二、Aho-Cora...

Z-Blog 发布文章时添加额外字段

代码老兵 技术 16
目标效果在后台:文章编辑页↓标题↓【新增一个下拉框】 文章类型: ▼ 原创 转载 翻译并且保存到数据库。一、创建插件(或在已有插件修改)目录:/zb_users/plugin/postselect/ include.php三、include.php<?phpRegisterPlugin("postselect","ActivePlugin_postselect");function Acti...

Z-Blog 事件(Hook)设置指南

代码老兵 技术 18
一、Z-Blog 事件机制原理Z-BlogPHP 的 Hook 本质是:$zbp->AddFilter('事件名', '函数名');或者Add_Filter_Plugin('事件名', '函数名');然后系统在指定位置:foreach ($GLOBALS['Filter_Plugin_XXX'] as $fpname => &$fpsignal) { $fpname();}二、...

macOS 上为 GitHub 生成 SSH Key 的完整步骤

代码老兵 技术 39
一、检查是否已有 SSH Key打开「终端」执行:ls -al ~/.ssh如果看到类似:id_ed25519id_ed25519.pubid_rsaid_rsa.pub说明已经存在 SSH Key,可以选择继续使用,或者重新生成一个新的。二、生成新的 SSH Key(推荐 Ed25519)GitHub 官方推荐使用 Ed25519:ssh-keygen -t ed25519 -C "你的GitH...

在 iPhone 上下载国外App

代码老兵 随笔 20
地区/国家限制App Store 会根据 Apple ID 的国家或地区限制应用下载。如果你的 Apple ID 绑定的是中国大陆,就可能无法下载 OpenAI 官方的 ChatGPT 应用,因为它在大陆 App Store 不上架。解决办法:换成美国、加拿大、香港等地区的 Apple ID。或者在现有 Apple ID 上更改地区。注册一个国外 Apple ID(推荐)比如注册 美国区 Appl...

在 Postman 里处理 timestamp + 参数签名

代码老兵 技术 13
核心思路是:在请求发送前生成 timestamp按后端约定规则拼接参数字符串用约定算法(如 MD5 / HMAC-SD256)生成 sign把 timestamp 和 sign 自动加到请求里一、常见签名规则示例假设后端规则是:1. 所有参数按 ASCII 排序 2. 拼接成 key=value&key=value 3. 最后拼接 secret 4. MD5 或 HMAC-SHA256例如...

YAML 语法详细说明

代码老兵 技术 11
一、基础结构YAML = 缩进表示层级(不用 {} 和 [])key: value二、数据类型1. 字符串name: Tomtitle: "Hello World"desc: 'Single quoted string'必须加引号的情况url: "http://example.com:8080"password: "abc#123"env: "on" # 否则可能被解析成 boolean2. 数字...

Carbon 判断两个时间段是否有交叉

代码老兵 技术 14
判断 两个时间段是否有交叉(重叠),核心公式其实只有一句话 A.start < B.end && A.end > B.start只要满足这个条件,就说明两个时间段有交叉。 具体写法假设:use Carbon\Carbon;$aStart = Carbon::parse('2026-02-10 10:00:00');$aEnd = Carbon::parse('2026-...

MySQL 里常用的字符串函数LEFT()

代码老兵 技术 13
基本语法LEFT(str, length)str:字符串length:从左边取多少个字符 最简单例子SELECT LEFT('Hello World', 5);-- Hello 实际表字段用法SELECT LEFT(title, 10)FROM email_template; 取 title 的前 10 个字符 常见业务场景截取年月(YYYY-MM)SELECT LEFT(created_at,...