首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
269 阅读
2
Customer complaints evolve with in-car tech
188 阅读
3
JavaScript解析
153 阅读
4
内连接,左连接,右连接作用及区别
111 阅读
5
所谓关系
109 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
160
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
31
篇与
的结果
2025-07-29
PHP正则匹配
PHP 的正则表达式功能主要基于 PCRE(Perl Compatible Regular Expressions)库(版本 >=8.x)。以下是其核心原理和关键机制的深入解析:1. 核心引擎:回溯型 NFA(非确定性有限自动机)PHP 使用 NFA 引擎,其特点包括:路径探索:同时尝试所有可能的匹配路径(通过回溯)。贪婪匹配默认:量词(*, +, ?, {m,n})默认尽可能多地匹配字符。回溯机制:当当前路径匹配失败时,引擎回退到最近的决策点尝试其他路径(核心机制)。2. 匹配过程详解以正则 /(a|b)+c/ 匹配字符串 "abc" 为例:分支选择:先尝试匹配 "a"(分支 (a|b) 的第一个选项)。量词贪婪:尝试继续匹配,发现 "b" 符合,匹配结果为 "ab"。匹配失败与回溯:尝试匹配 "c",但剩余字符是 "c"(非 "c" 直接匹配)。引擎回退:减少 + 的匹配次数,释放最后一个字符 "b"。重新尝试:用 "c" 匹配释放后的 "b" → 失败。继续回溯到第一个分支,尝试 (a|b) 的第二个选项 "b",最终路径 "a" → "b" → "c" 成功。3. 性能陷阱:灾难性回溯当正则存在嵌套量词或模糊路径时,回溯可能指数级增长:phpCopy Code// 危险正则:嵌套量词 + 冲突后缀$regex = '/(a+)+b/'; $str = 'aaaaaaaaaaaaac'; // 结尾是 'c' 而非 'b'回溯过程:外层 (a+) 和内层 a+ 尝试所有组合分割 "a" 序列。直到所有组合失败,时间复杂度达 O(2ⁿ)(n 为 a 的数量)。4. PHP 优化机制a) 预编译 & 缓存phpCopy Code// 编译后的正则被缓存,后续调用直接复用preg_match('/\d+/', 'test123'); // 首次编译preg_match('/\d+/', '456'); // 使用缓存b) 零宽断言(Lookaround)(?=...) / (?!...):检查右侧条件(不消耗字符)。(?<=...) / (?<!...):检查左侧条件。phpCopy Code// 匹配 "q" 后非 "u" 的单词preg_match('/q(?!u)/', 'qatar'); // 匹配成功('q' 后是 'a')c) 回溯控制(避免灾难性回溯)原子组 (?>...):组内匹配成功后,放弃内部回溯点。phpCopy Code$regex = '/(?>a+)+b/'; // 内层 a+ 匹配后锁定,不再回溯固化分组 (?> ):等同于原子组。占有优先量词 *+, ++, ?+:匹配后不释放字符。phpCopy Code$regex = '/a++b/'; // 等价于 (?>a+)b5. 其他关键特性a) 子组捕获括号 () 捕获内容存入 $matches:phpCopy Codepreg_match('/(\d+)/', 'ID: 123', $matches);// $matches[0] = "123", $matches[1] = "123"b) 模式修饰符i:忽略大小写(/[a-z]/i 匹配 "A")。s:单行模式(. 匹配换行符 \n)。u:UTF-8 模式(正确处理中文等)。6. 最佳实践与性能建议避免嵌套量词:如 (a+)+、(.)。用具体字符替代 .:如 \d+ 优于 .*?(\d+)。使用非捕获组 (?: ):减少内存开销。phpCopy Codepreg_match('/(?:\d{4})-(?:\d{2})/', '2023-05');锚定起始位置:用 ^ 或 \A 减少无效扫描。优先使用占有优先量词:如 a++b 替代 a+b(避免回溯)。总结组件 作用NFA 引擎 通过回溯探索所有路径,支持复杂匹配。灾难性回溯 嵌套量词导致指数级计算,需用原子组/占有优先量词避免。预编译缓存 提升重复匹配性能。零宽断言 上下文检查不影响匹配位置。回溯控制 原子组 (?> ) 和占有优先量词 *+ 锁定匹配结果。关键点:理解回溯机制是优化 PHP 正则性能的核心。通过减少不确定性路径(如模糊量词)和利用回溯控制特性,可显著提升效率。
2025年07月29日
1 阅读
0 评论
0 点赞
2025-07-24
php操作Oracle数据库示例
下面是一个完整的 PHP 操作 Oracle 数据库命令指南,涵盖了从连接到基本操作的实用代码示例:1. 连接数据库<?php // 配置连接信息 $db_host = "localhost"; $db_port = "1521"; $db_service = "ORCL"; // 服务名 $db_user = "PLM_TEST"; $db_pass = "your_password"; // 实际密码 // 创建连接 $conn = oci_connect( $db_user, $db_pass, "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$db_host)(PORT=$db_port))(CONNECT_DATA=(SERVICE_NAME=$db_service)))" ); if (!$conn) { $e = oci_error(); die("连接失败: " . $e['message']); } else { echo "Oracle 数据库连接成功!"; } ?>2. 执行查询// 准备SQL语句 $sql = "SELECT employee_id, first_name, last_name FROM employees WHERE department_id = :dept_id"; // 创建语句句柄 $stmt = oci_parse($conn, $sql); // 绑定参数(防止SQL注入) $dept_id = 50; oci_bind_by_name($stmt, ":dept_id", $dept_id); // 执行查询 oci_execute($stmt); // 获取结果 echo "<table border='1'>"; echo "<tr><th>ID</th><th>名字</th><th>姓氏</th></tr>"; while ($row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>"; echo "<td>" . $row['EMPLOYEE_ID'] . "</td>"; echo "<td>" . $row['FIRST_NAME'] . "</td>"; echo "<td>" . $row['LAST_NAME'] . "</td>"; echo "</tr>"; } echo "</table>"; // 释放资源 oci_free_statement($stmt);3. 插入数据$sql = "INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id) VALUES (employees_seq.nextval, :fname, :lname, :email, SYSDATE, :job_id)"; $stmt = oci_parse($conn, $sql); // 绑定参数 $fname = "张"; $lname = "三"; $email = "zhangsan@example.com"; $job_id = "IT_PROG"; oci_bind_by_name($stmt, ":fname", $fname); oci_bind_by_name($stmt, ":lname", $lname); oci_bind_by_name($stmt, ":email", $email); oci_bind_by_name($stmt, ":job_id", $job_id); // 执行并检查结果 if (oci_execute($stmt)) { echo "新记录插入成功!"; oci_commit($conn); // 提交事务 } else { $e = oci_error($stmt); echo "插入失败: " . $e['message']; } oci_free_statement($stmt);4. 更新数据$sql = "UPDATE employees SET salary = :salary WHERE employee_id = :emp_id"; $stmt = oci_parse($conn, $sql); $salary = 8000; $emp_id = 100; oci_bind_by_name($stmt, ":salary", $salary); oci_bind_by_name($stmt, ":emp_id", $emp_id); if (oci_execute($stmt)) { echo "记录更新成功!"; oci_commit($conn); } else { $e = oci_error($stmt); echo "更新失败: " . $e['message']; } oci_free_statement($stmt);5. 删除数据$sql = "DELETE FROM employees WHERE employee_id = :emp_id"; $stmt = oci_parse($conn, $sql); $emp_id = 207; oci_bind_by_name($stmt, ":emp_id", $emp_id); if (oci_execute($stmt)) { echo "记录删除成功!"; oci_commit($conn); } else { $e = oci_error($stmt); echo "删除失败: " . $e['message']; } oci_free_statement($stmt);6. 调用存储过程// 假设有存储过程: get_employee_name(emp_id IN NUMBER, emp_name OUT VARCHAR2) $sql = "BEGIN get_employee_name(:emp_id, :emp_name); END;"; $stmt = oci_parse($conn, $sql); $emp_id = 100; $emp_name = ""; // 用于接收输出 oci_bind_by_name($stmt, ":emp_id", $emp_id); oci_bind_by_name($stmt, ":emp_name", $emp_name, 100); // 100是缓冲区大小 oci_execute($stmt); echo "员工姓名: " . $emp_name; oci_free_statement($stmt);7. 事务处理// 关闭自动提交 oci_set_autocommit($conn, false); try { // 执行多个操作... $stmt1 = oci_parse($conn, "UPDATE accounts SET balance = balance - 100 WHERE id = 1"); oci_execute($stmt1); $stmt2 = oci_parse($conn, "UPDATE accounts SET balance = balance + 100 WHERE id = 2"); oci_execute($stmt2); // 提交事务 oci_commit($conn); echo "事务执行成功!"; } catch (Exception $e) { // 回滚事务 oci_rollback($conn); echo "事务失败: " . $e->getMessage(); } oci_free_statement($stmt1); oci_free_statement($stmt2);8. 错误处理最佳实践function execute_query($conn, $sql, $params = []) { $stmt = oci_parse($conn, $sql); if (!$stmt) { $e = oci_error($conn); throw new Exception("SQL解析失败: " . $e['message']); } // 绑定参数 foreach ($params as $key => $value) { oci_bind_by_name($stmt, $key, $params[$key]); } if (!oci_execute($stmt)) { $e = oci_error($stmt); throw new Exception("查询执行失败: " . $e['message']); } return $stmt; } // 使用示例 try { $stmt = execute_query($conn, "SELECT * FROM products WHERE category = :cat", [":cat" => "Electronics"] ); // 处理结果... } catch (Exception $e) { echo "错误: " . $e->getMessage(); }9. 关闭连接// 关闭连接 oci_close($conn);📌 重要注意事项:安全第一:始终使用 oci_bind_by_name() 防止SQL注入不要在代码中硬编码密码(使用环境变量或配置文件)最小权限原则:使用普通用户而非SYSTEM性能优化:// 设置预取行数(提高查询性能) oci_set_prefetch($stmt, 100); // 使用持久连接(高并发场景) $conn = oci_pconnect($user, $pass, $connection_string);数据类型处理:// 处理CLOB类型 $clob = oci_new_descriptor($conn, OCI_D_LOB); oci_bind_by_name($stmt, ":clob_data", $clob, -1, OCI_B_CLOB); // 处理日期 $date = date('d-M-Y'); oci_bind_by_name($stmt, ":hire_date", $date);替代连接方式(PDO):$dbh = new PDO("oci:dbname=//localhost:1521/ORCL;charset=UTF8", $user, $pass); $stmt = $dbh->prepare("SELECT * FROM employees WHERE id = :id"); $stmt->execute([':id' => 100]);这些示例覆盖了PHP操作Oracle数据库的常见场景,建议从简单查询开始练习,逐步掌握事务处理和存储过程调用等高级功能。
2025年07月24日
2 阅读
0 评论
0 点赞
2025-07-09
导航页面
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>清爽导航</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e4edf9 100%); min-height: 100vh; display: flex; justify-content: center; align-items: center; padding: 20px; color: #333; } .container { width: 100%; max-width: 900px; background: rgba(255, 255, 255, 0.92); border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); overflow: hidden; backdrop-filter: blur(10px); } header { text-align: center; padding: 30px 20px 20px; background: linear-gradient(to right, #4b6cb7, #6a93cb); color: white; } h1 { font-size: 2.5rem; font-weight: 300; letter-spacing: 1px; margin-bottom: 10px; } .subtitle { font-weight: 300; opacity: 0.9; font-size: 1.1rem; } .tabs { display: flex; background: #f0f5ff; border-bottom: 1px solid #e1e8f7; } .tab { flex: 1; text-align: center; padding: 18px 0; font-size: 1.1rem; font-weight: 500; color: #5a7ab5; cursor: pointer; transition: all 0.3s ease; position: relative; } .tab:hover { background: rgba(106, 147, 203, 0.1); } .tab.active { color: #4b6cb7; background: white; } .tab.active::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 3px; background: #4b6cb7; } .tab i { margin-right: 10px; font-size: 1.2rem; } .content { padding: 30px; min-height: 400px; } .tab-content { display: none; animation: fadeIn 0.5s ease; } .tab-content.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } h2 { color: #4b6cb7; margin-bottom: 20px; font-weight: 500; display: flex; align-items: center; } h2 i { margin-right: 12px; background: #eef4ff; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } p { line-height: 1.8; color: #555; margin-bottom: 20px; font-size: 1.05rem; } .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 20px; margin-top: 20px; } .card { background: white; border-radius: 12px; padding: 20px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.03); transition: transform 0.3s ease, box-shadow 0.3s ease; border: 1px solid #eef2f7; } .card:hover { transform: translateY(-5px); box-shadow: 0 8px 20px rgba(75, 108, 183, 0.15); } .card h3 { color: #4b6cb7; margin-bottom: 15px; display: flex; align-items: center; } .card h3 i { margin-right: 10px; color: #6a93cb; } .card ul { list-style: none; padding-left: 10px; } .card li { padding: 8px 0; border-bottom: 1px dashed #eaeff5; display: flex; align-items: center; } .card li:last-child { border-bottom: none; } .card li i { margin-right: 10px; color: #6a93cb; font-size: 0.9rem; } footer { text-align: center; padding: 20px; color: #7a8fb3; font-size: 0.9rem; border-top: 1px solid #eef2f7; background: #f9fbfe; } @media (max-width: 768px) { .tabs { flex-wrap: wrap; } .tab { flex: 1 0 50%; padding: 15px 0; } h1 { font-size: 2rem; } .content { padding: 20px; } } @media (max-width: 480px) { .tab { flex: 1 0 100%; } .card-grid { grid-template-columns: 1fr; } } </style> </head> <body> <div class="container"> <header> <h1>清爽导航</h1> <p class="subtitle">简洁高效 • 专注体验</p> </header> <div class="tabs"> <div class="tab active" data-tab="dashboard"> <i class="fas fa-home"></i>首页 </div> <div class="tab" data-tab="resources"> <i class="fas fa-book"></i>资源 </div> <div class="tab" data-tab="tools"> <i class="fas fa-tools"></i>工具 </div> <div class="tab" data-tab="settings"> <i class="fas fa-cog"></i>设置 </div> </div> <div class="content"> <!-- 首页内容 --> <div class="tab-content active" id="dashboard"> <h2><i class="fas fa-home"></i>欢迎使用清爽导航</h2> <p>这是一个简洁高效的导航页面,帮助您快速访问常用资源。设计注重用户体验和视觉舒适度,让您的日常操作更加流畅愉悦。</p> <div class="card-grid"> <div class="card"> <h3><i class="fas fa-rocket"></i>快捷入口</h3> <ul> <li><i class="fas fa-envelope"></i>邮箱服务</li> <li><i class="fas fa-calendar"></i>日程管理</li> <li><i class="fas fa-cloud"></i>云存储</li> <li><i class="fas fa-users"></i>团队协作</li> </ul> </div> <div class="card"> <h3><i class="fas fa-history"></i>最近访问</h3> <ul> <li><i class="fas fa-file-alt"></i>项目文档</li> <li><i class="fas fa-chart-bar"></i>数据分析</li> <li><i class="fas fa-shopping-cart"></i>在线商城</li> <li><i class="fas fa-video"></i>视频会议</li> </ul> </div> <div class="card"> <h3><i class="fas fa-bell"></i>通知提醒</h3> <ul> <li><i class="fas fa-check-circle"></i>任务已完成</li> <li><i class="fas fa-exclamation-circle"></i>系统更新</li> <li><i class="fas fa-user-plus"></i>新成员加入</li> <li><i class="fas fa-gift"></i>特别优惠</li> </ul> </div> </div> </div> <!-- 资源内容 --> <div class="tab-content" id="resources"> <h2><i class="fas fa-book"></i>学习资源</h2> <p>精选高质量学习资源,涵盖多个领域,助力您的知识成长与技能提升。</p> <div class="card-grid"> <div class="card"> <h3><i class="fas fa-laptop-code"></i>开发资源</h3> <ul> <li><i class="fab fa-github"></i>GitHub 开源项目</li> <li><i class="fas fa-code"></i>在线编程练习</li> <li><i class="fas fa-book-open"></i>技术文档</li> <li><i class="fas fa-video"></i>教学视频</li> </ul> </div> <div class="card"> <h3><i class="fas fa-paint-brush"></i>设计资源</h3> <ul> <li><i class="fas fa-palette"></i>配色方案</li> <li><i class="fas fa-font"></i>字体资源</li> <li><i class="fas fa-images"></i>图片素材</li> <li><i class="fas fa-cube"></i>3D模型</li> </ul> </div> <div class="card"> <h3><i class="fas fa-book"></i>电子书籍</h3> <ul> <li><i class="fas fa-globe"></i>网络技术</li> <li><i class="fas fa-brain"></i>人工智能</li> <li><i class="fas fa-chart-line"></i>商业经济</li> <li><i class="fas fa-heart"></i>文学艺术</li> </ul> </div> </div> </div> <!-- 工具内容 --> <div class="tab-content" id="tools"> <h2><i class="fas fa-tools"></i>实用工具</h2> <p>精选高效工具,提升您的工作效率和创造力,让复杂任务变得简单。</p> <div class="card-grid"> <div class="card"> <h3><i class="fas fa-calculator"></i>转换计算</h3> <ul> <li><i class="fas fa-ruler"></i>单位换算</li> <li><i class="fas fa-money-bill-wave"></i>货币转换</li> <li><i class="fas fa-percentage"></i>百分比计算</li> <li><i class="fas fa-clock"></i>时区转换</li> </ul> </div> <div class="card"> <h3><i class="fas fa-edit"></i>文档处理</h3> <ul> <li><i class="fas fa-file-pdf"></i>PDF工具</li> <li><i class="fas fa-file-image"></i>图片压缩</li> <li><i class="fas fa-file-word"></i>文档转换</li> <li><i class="fas fa-file-alt"></i>文本处理</li> </ul> </div> <div class="card"> <h3><i class="fas fa-chart-pie"></i>数据分析</h3> <ul> <li><i class="fas fa-table"></i>数据可视化</li> <li><i class="fas fa-chart-line"></i>图表生成</li> <li><i class="fas fa-calculator"></i>统计计算</li> <li><i class="fas fa-database"></i>数据清洗</li> </ul> </div> </div> </div> <!-- 设置内容 --> <div class="tab-content" id="settings"> <h2><i class="fas fa-cog"></i>系统设置</h2> <p>自定义您的导航体验,调整设置以满足您的个人偏好和工作需求。</p> <div class="card-grid"> <div class="card"> <h3><i class="fas fa-user"></i>账户设置</h3> <ul> <li><i class="fas fa-user-edit"></i>个人信息</li> <li><i class="fas fa-shield-alt"></i>安全设置</li> <li><i class="fas fa-bell"></i>通知偏好</li> <li><i class="fas fa-language"></i>语言设置</li> </ul> </div> <div class="card"> <h3><i class="fas fa-paint-brush"></i>外观设置</h3> <ul> <li><i class="fas fa-moon"></i>深色模式</li> <li><i class="fas fa-palette"></i>主题颜色</li> <li><i class="fas fa-font"></i>字体大小</li> <li><i class="fas fa-border-all"></i>布局调整</li> </ul> </div> <div class="card"> <h3><i class="fas fa-sliders-h"></i>高级设置</h3> <ul> <li><i class="fas fa-sync-alt"></i>数据同步</li> <li><i class="fas fa-keyboard"></i>快捷键</li> <li><i class="fas fa-plug"></i>插件管理</li> <li><i class="fas fa-database"></i>数据备份</li> </ul> </div> </div> </div> </div> <footer> <p>© 2023 清爽导航 | 简洁设计,高效体验</p> </footer> </div> <script> document.addEventListener('DOMContentLoaded', function() { const tabs = document.querySelectorAll('.tab'); const tabContents = document.querySelectorAll('.tab-content'); tabs.forEach(tab => { tab.addEventListener('click', () => { // 移除所有活动状态 tabs.forEach(t => t.classList.remove('active')); tabContents.forEach(c => c.classList.remove('active')); // 添加当前活动状态 tab.classList.add('active'); const tabId = tab.getAttribute('data-tab'); document.getElementById(tabId).classList.add('active'); }); }); }); </script> </body> </html>
2025年07月09日
2 阅读
0 评论
0 点赞
2025-07-07
天气API应用实例
//ajax请求api获取天气数据 function getWeather() { $.ajax({ type: "get", dataType: "json", url: "http://wthrcdn.etouch.cn/weather_mini?city=合肥", success: function (data) { var tips = data.data.ganmao; var today = data.data.forecast[0]; var tomorrow = data.data.forecast[1]; var afterTomorrow = data.data.forecast[2]; //填充数据 $("#tips").html("Tips:" + tips); //填充天气数据 setWeather(".today", today); setWeather(".tomorrow", tomorrow); setWeather(".afterTomorrow", afterTomorrow); //设置天气img的src matchType(today.type, ".today"); matchType(tomorrow.type, ".tomorrow"); matchType(afterTomorrow.type, ".afterTomorrow"); } }); } //提取json数据并填充到标签中 function setWeather(date,data) { $(date).find('p').eq(0).html(data.date); $(date).find('p').eq(1).html(data.type); $(date).find('p').eq(2).html(data.high); $(date).find('p').eq(3).html(data.low); } //正则匹配天气类型,修改天气img的src function matchType(type,date) { var rain = /\u96e8/; var sun = /\u6674/; var cloud = /\u4e91/; //var overcast = /\u9634/; var imgName = rain.test(type)?"rain":(sun.test(type)?"sun":(cloud.test(type)?"cloud":"overcast")); $(date).find('img').attr('src','__STATIC__/admin/images/'+imgName+'.png'); //console.log(imgName); }{include file="public/head" /} <style> .am-comment-footer{margin:5px 10px;color: #999;padding:0 2px;border-left:5px solid #ccc} .am-comment-footer a{color: #999;} .comment{border: 1px solid #dedede;margin-top: 10px} .am-comment-bd{padding: 5px 10px} .solid{border-left: 1px solid #ccc} .message{display: inline-block;margin-left: 50px} .weather img{margin-top: -150px} </style> <title>首页</title> </head> <body> <header class="am-topbar am-topbar-fixed-top wos-header"> <div class="am-container"> <h1 class="am-topbar-brand"> <a href="http://www.anhuihym.top" target="_blank"><img src="__STATIC__/images/logo.png"></a> </h1> {include file="public/nav" /} </div> </header> <div class="banner"> <div class="am-g am-container"> <!--轮播图--> <div class="am-u-sm-12 am-u-md-12 am-u-lg-8"> <div data-am-widget="slider" class="am-slider am-slider-c1" data-am-slider='{"directionNav":false}' > <ul class="am-slides"> {volist name="Slide" id="vo"} <li> <a href="{:url('index/NewsDetailController/index',array('id'=>$vo['id']))}"><img src="__STATIC__/news_imgs/{$vo.img}" class="am-u-sm-12 am-u-md-12 am-u-md-8" style="max-height: 455px;"></a> <div class="am-slider-desc">{$vo.title}</div> </li> {/volist} </ul> </div> </div> <!--主要部门--> <div class="am-u-sm-0 am-u-md-0 am-u-lg-4 padding-none"> <div class="star am-container"><span><img src="__STATIC__/images/star2.png">主要部门</span></div> <ul class="padding-none am-gallery am-avg-sm-2 am-avg-md-4 am-avg-lg-2 am-gallery-overlay" data-am-gallery="{ pureview: true }" > {volist name="mainDep" id="vo"} <li> <div class="am-gallery-item"> <a href="{:url('index/NewsListController/index',array('id'=>$vo['id']))}"> <img src="__STATIC__/images/lins.png"/> <h3 class="am-gallery-title">{$vo.name}</h3> </a> </div> </li> {/volist} </ul> </div> </div> </div> <div class="am-g am-container newatype"> <div class="am-u-sm-12 am-u-md-12 am-u-lg-8 oh"> <div data-am-widget="titlebar" class="am-titlebar am-titlebar-default" style="margin-bottom: 10px"> <h2 class="am-titlebar-title ">最新发布</h2> </div> {volist name="newsList" id="vo"} <ul class="am-list am-list-static am-list-border"> <li> <span class="am-badge am-badge-danger">NEW</span> <span class="am-badge am-badge-success am-radius">{$vo.type}</span> <span class="am-badge am-badge-secondary am-radius">{$vo.dep}</span> <span class="am-badge am-badge-error am-radius">{$vo.create_time}</span> <a href="{:url('index/NewsDetailController/index',array('id'=>$vo['id']))}" style="padding: 0">{$vo.title}</a> </li> </ul> {/volist} </div> <div class="am-u-sm-12 am-u-md-12 am-u-lg-4"> <div data-am-widget="titlebar" class="am-titlebar am-titlebar-default" style="margin-bottom: 10px"> <h2 class="am-titlebar-title ">最新评论</h2> </div> {volist name="commentList" id="vo"} <div class="comment"> <header class="am-comment-hd"> <div class="am-comment-meta"> <span class="am-comment-author">{$vo.staff_name}</span> 评论于 <time>{$vo.create_time}</time> </div> </header> <div class="am-comment-bd">{$vo.comment}</div> <div class="am-comment-footer"> <a href="{:url('index/NewsDetailController/index',array('id'=>$vo['id']))}" title="点击查看新闻详情">{$vo.title}</a> </div> </div> {/volist} </div> <div class="am-u-sm-12 am-u-md-12 am-u-lg-12 oh"> <div data-am-widget="titlebar" class="am-titlebar am-titlebar-default" style="margin-bottom: 10px"> <h2 class="am-titlebar-title ">合肥天气 </h2> </div> <div class="am-u-md-12 weather"> <div class="today am-u-md-4"> <img src="__STATIC__/admin/images/sun.png" alt=""> <div class="message"> <p>今天</p> <p>天气</p> <p>最高</p> <p>最低</p> </div> </div> <div class="tomorrow solid am-u-md-4"> <img src="__STATIC__/admin/images/sun.png" alt="" > <div class="message"> <p>明天</p> <p>天气</p> <p>最高</p> <p>最低</p> </div> </div> <div class="afterTomorrow solid am-u-md-4"> <img src="__STATIC__/admin/images/sun.png" alt="" > <div class="message"> <p>后天</p> <p>天气</p> <p>最高</p> <p>最低</p> </div> </div> </div> </div> <div class="am-alert am-alert-secondary am-u-sm-12 am-u-md-12 am-u-lg-12" data-am-alert> <button type="button" class="am-close">×</button> <p id="tips"></p> </div> </div> <div data-am-widget="gotop" class="am-gotop am-gotop-fixed" > <a href="#top" title="回到顶部"> <span class="am-gotop-title">回到顶部</span> <i class="am-gotop-icon am-icon-chevron-up"></i> </a> </div> {include file="public/footer" /} </body> <script> //仪表盘数据 ajax定时获取 window.onload = function () { getWeather(); }; //ajax请求api获取天气数据 function getWeather() { $.ajax({ type: "get", dataType: "json", url: "http://wthrcdn.etouch.cn/weather_mini?city=合肥", success: function (data) { var tips = data.data.ganmao; var today = data.data.forecast[0]; var tomorrow = data.data.forecast[1]; var afterTomorrow = data.data.forecast[2]; //填充数据 $("#tips").html("Tips:" + tips); //填充天气数据 setWeather(".today", today); setWeather(".tomorrow", tomorrow); setWeather(".afterTomorrow", afterTomorrow); //设置天气img的src matchType(today.type, ".today"); matchType(tomorrow.type, ".tomorrow"); matchType(afterTomorrow.type, ".afterTomorrow"); } }); } //提取json数据并填充到标签中 function setWeather(date,data) { $(date).find('p').eq(0).html(data.date); $(date).find('p').eq(1).html(data.type); $(date).find('p').eq(2).html(data.high); $(date).find('p').eq(3).html(data.low); } //正则匹配天气类型,修改天气img的src function matchType(type,date) { var rain = /\u96e8/; var sun = /\u6674/; var cloud = /\u4e91/; //var overcast = /\u9634/; var imgName = rain.test(type)?"rain":(sun.test(type)?"sun":(cloud.test(type)?"cloud":"overcast")); $(date).find('img').attr('src','__STATIC__/admin/images/'+imgName+'.png'); //console.log(imgName); } </script> </html>
2025年07月07日
5 阅读
0 评论
0 点赞
2025-07-07
此内容被密码保护
加密文章,请前往内页查看详情
2025年07月07日
3 阅读
0 评论
0 点赞
1
2
3
...
7
0:00