首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
371 阅读
2
Customer complaints evolve with in-car tech
256 阅读
3
JavaScript解析
194 阅读
4
所谓关系
170 阅读
5
解决Edge浏览器提示“此网站已被人举报不安全”
149 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
193
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
193
篇与
的结果
2025-12-16
正则表达式核心用法
三、常见模式示例(直接拿来用) 现在我们把上面的规则组合起来,看看实际应用。 匹配手机号(中国大陆):1[3-9]\d{9} 1:以1开头 [3-9]:第二位是3-9 \d{9}:后面跟着9个数字 示例匹配:13800138000 匹配电子邮箱:\w+@\w+\.\w+ \w+:一个或多个单词字符(用户名) @:字面量@ \w+:一个或多个单词字符(域名) \.:转义的点号(.是元字符,需要\转义) \w+:一个或多个单词字符(顶级域名,如com) 简单示例匹配:test@example.com(实际邮箱更复杂,这是简化版) 提取日期(YYYY-MM-DD格式):(\d{4})-(\d{2})-(\d{2}) 这里引入了 () 分组 的概念。括号内的内容会被单独“捕获”,方便你提取。 匹配 2023-10-27 后,可以分别获得 2023、10、27 三个部分。 匹配空白行:^\s*$ ^:行首 \s*:0个或多个空白字符 $:行尾 这行除了空白什么都没有,所以是空白行。
2025年12月16日
25 阅读
0 评论
0 点赞
2025-12-05
JavaScript DOM 相关知识整理
1. DOM 简介 DOM (Document Object Model) 是一种以树形结构表示 HTML 或 XML 文档的编程接口。它将文档解析为一个由节点和对象组成的结构,使编程语言能够连接和操作文档。 1.1 DOM 树结构 - Document - Element (html) - Element (head) - Element (title) - Text - Element (body) - Element (div) - Element (p) - Text 2. 节点类型 DOM 树中的每个节点都是一个对象,主要有以下几种类型: 节点类型 Node常量 nodeType 值 元素节点 Node.ELEMENT_NODE 1 属性节点 Node.ATTRIBUTE_NODE 2 文本节点 Node.TEXT_NODE 3 注释节点 Node.COMMENT_NODE 8 文档节点 Node.DOCUMENT_NODE 9 3. 获取 DOM 元素 3.1 基本获取方法 // 通过 ID 获取单个元素 document.getElementById('myId'); // 通过类名获取元素集合 (HTMLCollection) document.getElementsByClassName('myClass'); // 通过标签名获取元素集合 (HTMLCollection) document.getElementsByTagName('div'); // 通过 CSS 选择器获取单个元素 document.querySelector('#myId .myClass'); // 通过 CSS 选择器获取所有匹配元素 (NodeList) document.querySelectorAll('div.className'); 3.2 新增获取方法 (HTML5) // 通过元素 name 属性获取 document.getElementsByName('username'); // 获取第一个匹配的表单元素 document.forms['myForm']; document.images; document.links; 4. DOM 操作 4.1 元素创建 // 创建元素节点 const newDiv = document.createElement('div'); // 创建文本节点 const textNode = document.createTextNode('Hello World'); // 创建完整元素 (设置文本内容) const div = document.createElement('div'); div.textContent = 'Hello World'; // 或者 div.innerHTML = '<span>Hello</span> World'; 4.2 元素添加 // 添加子元素 (作为最后一个子元素) parentElement.appendChild(newElement); // 在指定位置插入元素 parentElement.insertBefore(newElement, referenceElement); // 在特定位置插入 HTML (不推荐用于用户内容,有 XSS 风险) parentElement.insertAdjacentHTML('beforebegin', htmlString); insertAdjacentHTML 位置参数: beforebegin: 元素前面 afterbegin: 元素内部第一个子元素前面 beforeend: 元素内部最后一个子元素后面 afterend: 元素后面 4.3 元素移除 // 移除子元素 parentElement.removeChild(childElement); // 直接移除自身 (现代浏览器) element.remove(); // 移除所有子元素 element.innerHTML = ''; // 或者 while (element.firstChild) { element.removeChild(element.firstChild); } 4.4 元素替换 parentElement.replaceChild(newElement, oldElement); 4.5 克隆元素 // 浅克隆 (只克隆元素,不克隆子元素) const shallowClone = element.cloneNode(false); // 深克隆 (克隆元素及其所有子元素) const deepClone = element.cloneNode(true); 5. 元素属性与特性 5.1 属性访问 // 获取属性 element.getAttribute('class'); // 设置属性 element.setAttribute('class', 'myClass'); // 移除属性 element.removeAttribute('class'); // 属性存在性检查 element.hasAttribute('class'); 5.2 DOM 属性与 HTML 特性 // DOM 属性 (直接访问) element.id = 'newId'; element.className = 'newClass'; element.value = 'newValue'; // HTML 特性 (通过 attribute 方法) element.setAttribute('data-value', '123'); const dataValue = element.getAttribute('data-value'); 5.3 类名操作 // 检查类名 element.classList.contains('myClass'); // 添加类名 element.classList.add('newClass'); // 移除类名 element.classList.remove('oldClass'); // 切换类名 element.classList.toggle('active'); // 替换类名 element.classList.replace('old', 'new'); 6. 元素样式操作 // 直接修改样式 (行内样式) element.style.color = 'red'; element.style.backgroundColor = '#f0f0f0'; element.style.cssText = 'color: red; background: #f0f0f0;'; // 获取计算样式 (所有最终样式) const computedStyle = window.getComputedStyle(element); console.log(computedStyle.color); 7. 元素尺寸与位置 7.1 尺寸 // 内容区域尺寸 (不包括边框和内边距) element.clientWidth; element.clientHeight; // 总尺寸 (包括边框和内边距) element.offsetWidth; element.offsetHeight; // 尺寸 (精确到浮点数) element.getBoundingClientRect().width; element.getBoundingClientRect().height; 7.2 位置 // 元素相对于文档的位置 (包括滚动偏移) element.offsetTop; element.offsetLeft; // 元素相对于最近的已定位祖先元素的位置 element.getBoundingClientRect().top; element.getBoundingClientRect().left; // 元素相对于视口的位置 const rect = element.getBoundingClientRect(); console.log(rect.top, rect.left, rect.width, rect.height); 8. 事件处理 8.1 事件绑定 // 方式1: 事件属性 element.onclick = function() { /* 处理函数 */ }; // 方式2: addEventListener (推荐) element.addEventListener('click', function() { /* 处理函数 */ }); // 多个事件监听器 element.addEventListener('click', handler1); element.addEventListener('click', handler2); // 一次性事件 element.addEventListener('click', function handler() { // 执行后自动移除 }, { once: true }); 8.2 事件对象 element.addEventListener('click', function(e) { console.log(e.type); // 事件类型 (click) console.log(e.target); // 事件目标元素 console.log(e.currentTarget); // 当前处理事件的元素 console.log(e.eventPhase); // 事件阶段 (1: 捕获, 2: 目标, 3: 冒泡) // 鼠标事件 e.clientX; e.clientY; // 相对于视口的坐标 e.pageX; e.pageY; // 相对于文档的坐标 // 阻止默认行为 e.preventDefault(); // 阻止事件冒泡 e.stopPropagation(); }); 8.3 事件委托 // 在父元素上监听子元素的事件 document.querySelector('ul').addEventListener('click', function(e) { if (e.target.tagName === 'LI') { // 处理 li 的点击 } }); 8.4 常见事件类型 鼠标事件: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave 键盘事件: keydown, keyup, keypress 表单事件: submit, reset, change, focus, blur, input 窗口事件: load, resize, scroll, unload
2025年12月05日
14 阅读
0 评论
0 点赞
2025-12-04
oracle查询语句在内部可以运行,但套入变量就不行问题
$sql = " SELECT i.SPECIFICATION, i.MD_ID, i.MD_NAME, i.REVISIONID FROM PLM2024.ITEM_0 i INNER JOIN ( SELECT MD_ID, MAX(REVISIONID) AS latest_revision FROM PLM2024.ITEM_0 WHERE REGEXP_LIKE(MD_ID, '^(XC|XQ|QD|QB|QE|QF|QG|QH|QM|QN|QR|QY)') GROUP BY MD_ID ) latest ON i.MD_ID = latest.MD_ID AND i.REVISIONID = latest.latest_revision WHERE REGEXP_LIKE(i.MD_ID, '^(XC|XQ|QD|QB|QE|QF|QG|QH|QM|QN|QR|QY)'); "; 里面的语句能在oracle里正常运行,但是套入$sql里就查不了了解决办法$sql = <<<SQL SELECT i.SPECIFICATION, i.MD_ID, i.MD_NAME, i.REVISIONID FROM PLM2024.ITEM_0 i INNER JOIN ( SELECT MD_ID, MAX(REVISIONID) AS latest_revision FROM PLM2024.ITEM_0 WHERE REGEXP_LIKE(MD_ID, '^(XC|XQ|QD|QB|QE|QF|QG|QH|QM|QN|QR|QY)') GROUP BY MD_ID ) latest ON i.MD_ID = latest.MD_ID AND i.REVISIONID = latest.latest_revision WHERE REGEXP_LIKE(i.MD_ID, '^(XC|XQ|QD|QB|QE|QF|QG|QH|QM|QN|QR|QY)') SQL;这个问题通常是由于 SQL语句中的换行符和引号处理 导致的。在PHP中直接将多行SQL字符串赋值给变量时,需要注意以下几点:问题分析换行符问题:PHP中的多行字符串会包含实际换行符引号转义:SQL语句中的引号可能需要转义SQLPlus与PHP环境差异:在SQLPlus中能运行不代表在PHP中也能直接运行HEREDOC语法详解 什么是HEREDOC? HEREDOC(Here Document)是PHP中一种定义多行字符串的语法结构,特别适合处理包含大量文本、HTML或SQL代码的情况。 $string = <<<标识符 多行文本内容 标识符; HEREDOC的特点 1. 保留所有格式 $sql = <<<SQL SELECT * FROM users WHERE status = 'active' AND created_at > '2024-01-01' ORDER BY id DESC SQL; // SQL字符串会完全保留换行和缩进 2. 变量解析 HEREDOC中会解析变量(类似于双引号字符串): $name = "张三"; $age = 25; $text = <<<TEXT 姓名:$name 年龄:$age 职业:程序员 TEXT; echo $text; /* 输出: 姓名:张三 年龄:25 职业:程序员 */ 3. 支持复杂表达式 $user = ['name' => '李四', 'age' => 30]; $text = <<<TEXT 用户信息: 姓名:{$user['name']} 年龄:{$user['age']} TEXT; 使用规则和注意事项 重要规则: 标识符命名:自定义,通常使用大写字母(如SQL、EOD、HTML等) 结束标识符: 必须单独一行 必须顶格写(不能有缩进) 后面只能有分号,不能有其他字符 在PHP中,HEREDOC语法中的标识符(如SQL、EOD、HTML)是自定义的,没有预定义的标准格式。你可以使用任何有效的标签名称,但通常使用大写字母以增强可读性,并且要与内容有所区分。重要规则:标识符由字母、数字和下划线组成,且必须以字母或下划线开头。开始标识符(<<<之后)和结束标识符必须相同,结束标识符必须顶格写,且后面只能有分号(不能有任何其他字符,包括空格)。开始标识符可以用双引号括起来,也可以不用(但通常不用)。如果用双引号,则与不用一样,都是HEREDOC;如果用单引号,则变成Nowdoc,不解析变量。示例:$str = <<<EOD示例文本EOD;$str = <<<'EOD'示例文本(不解析变量)EOD;注意:在PHP 7.3.0之前,结束标识符必须从行的第一列开始,并且后面只能有一个分号(或没有分号,但必须是行结束)。从PHP 7.3.0开始,结束标识符可以缩进,但缩进部分会被从每行文本中去除(称为“缩进终止”)。因此,在编写HEREDOC时,选择标识符要避免与内容中的字符串冲突。例如,如果你在写SQL,使用“SQL”作为标识符很直观,但要确保在内容中不会出现“SQL”这个词单独在一行且顶格。
2025年12月04日
80 阅读
0 评论
0 点赞
2025-12-02
此内容被密码保护
加密文章,请前往内页查看详情
2025年12月02日
54 阅读
0 评论
0 点赞
2025-11-26
javascript知识点记录
async 是 JavaScript 中用于声明异步函数的关键字。让我用简单易懂的方式解释: 基本概念 async 让一个函数变成"异步函数",这意味着: 不阻塞代码执行:函数内部的异步操作不会阻止后续代码运行 返回 Promise:自动将返回值包装成 Promise 对象 配合 await 使用:可以在函数内部用 await 等待其他 Promise 完成 //没有async传统方法 function loadData() { return axios.get('url') // 返回 Promise .then(response => { return response.data; }) .catch(error => { console.error(error); }); } // 使用时 loadData().then(data => { console.log(data); }); //有async async function loadData() { try { const response = await axios.get('url'); // 等待请求完成 return response.data; // 自动包装成 Promise } catch (error) { console.error(error); } } // 使用时(两种方式) // 方式1:用 await(必须在 async 函数内) const data = await loadData(); // 方式2:用 then(因为返回的是 Promise) loadData().then(data => { console.log(data); }); 关键特点 语法糖:让异步代码看起来像同步代码,更易读 错误处理:可以用传统的 try-catch 捕获错误 不会阻塞:虽然代码看起来是"等待"的,但不会阻塞整个程序 简单说:async 让写异步代码变得像写同步代码一样简单直观!
2025年11月26日
47 阅读
0 评论
0 点赞
1
...
9
10
11
...
39
0:00