当前位置:

首页 > 编程开发 > 如何做一个文本搜索?

如何做一个文本搜索?

本文目录

    先说说这段代码的背景。它其实是一个很经典的ASP小工具——站内文本搜索器,当年在静态网站时代非常实用。整段代码的核心思路并不复杂:通过递归遍历服务器上的文件夹,逐个读取HTML文件,在里面查找用户输入的关键词,然后把匹配到的文件链接和标题列出来。 咱们拆开来看具体是怎么实现的。代码开头先定义了几个关

    先说说这段代码的背景。它其实是一个很经典的ASP小工具——站内文本搜索器,当年在静态网站时代非常实用。整段代码的核心思路并不复杂:通过递归遍历服务器上的文件夹,逐个读取HTML文件,在里面查找用户输入的关键词,然后把匹配到的文件链接和标题列出来。

    咱们拆开来看具体是怎么实现的。代码开头先定义了几个关键变量,比如head用来存页面标题,SearchString从请求参数中获取用户输入的内容。然后是一个很实用的辅助函数UnMapPath,它的作用是把服务器上的物理路径转换为虚拟路径。为什么要这么做?因为直接暴露物理路径既不安全,也不方便用户点击访问。

    接下来是核心的SearchFile函数。这个函数接受三个参数:文件路径、搜索关键词和标题引用。它的工作流程是:用FileSystemObject打开文件,把全部内容读到content变量里,然后用InStr函数检查是否包含搜索词。如果找到了,还会进一步提取</code>标签之间的内容,方便在搜索结果中显示更有意义的标题,而不是直接显示文件名。</p> <p>有意思的是,它还设计了一个<code>FileLink</code>函数,专门用来生成带链接的HTML列表项。如果搜索到的文件没有提取到标题,那就会用文件名作为备选。这个细节很贴心,毕竟不是所有HTML文件都规范地写了<code><title></code>标签。</p> <p>真正的遍历逻辑在<code>SearchFolder</code>子程序里。它先检查当前文件夹下的所有文件,只处理扩展名为<code>.htm</code>的文件,然后调用<code>SearchFile</code>进行匹配。如果匹配成功,就把结果输出到页面,同时用一个全局计数器<code>count</code>记录匹配数量。处理完文件后,再递归处理子文件夹,确保不会漏掉任何深层目录。</p> <p>页面本身的设计也很简洁:一个搜索表单,用户输入关键词后提交,结果会以列表形式展示,每个匹配文件都带着可点击的链接和标题。整个工具没有依赖数据库,也没有复杂的配置,对于一个中小型静态网站来说,完全够用了。</p> <p>当然,这段代码也存在一些明显的时代痕迹。比如它只处理<code>.htm</code>扩展名,没有考虑<code>.html</code>或<code>.shtml</code>;字符集写的是<code>gb_2312-80</code>,现在基本都改用<code>UTF-8</code>了;而且没有做任何安全防护,比如防止注入攻击或者限制搜索范围。不过作为早期ASP时代的怀旧作品,它确实代表了那个年代解决“站内搜索”问题的一种典型思路。</p> </div> <span class="article_notice">本文内容来源于网友投稿,如有侵权请联系删除。</span> <div class="article_otherarticle"> <span>作者最新文章</span> <div> <div class="otherarticles"> <a href="/news/767722" title="Word格式转换成PDF?Word转PDF的具体步骤是什么?"><span>Word格式转换成PDF?Word转PDF的具体步骤是什么?</span></a> <span>2026-09-02 19:13</span> </div> <div class="otherarticles"> <a href="/news/767559" title="长安猎手K50 2026款上市,14.19万元起售"><span>长安猎手K50 2026款上市,14.19万元起售</span></a> <span>2026-08-25 16:08</span> </div> <div class="otherarticles"> <a href="/news/767550" title="价格大跳水,网友惊呼买早了!两大巨头正面交锋,最高直降2500元,几乎所有品类“你降我也降”"><span>价格大跳水,网友惊呼买早了!两大巨头正面交锋,最高直降2500元,几乎所有品类“你降我也降”</span></a> <span>2026-08-25 16:02</span> </div> <div class="otherarticles"> <a href="/news/767512" title="全新奥迪Q3 L申报信息揭晓,车身尺寸升级,动力配置保持强劲"><span>全新奥迪Q3 L申报信息揭晓,车身尺寸升级,动力配置保持强劲</span></a> <span>2026-08-25 15:44</span> </div> <div class="otherarticles"> <a href="/news/767483" title="iPhone15ProMax屏幕常亮怎么设置 iPhone15ProMax屏幕常亮设置方法"><span>iPhone15ProMax屏幕常亮怎么设置 iPhone15ProMax屏幕常亮设置方法</span></a> <span>2026-08-25 15:31</span> </div> </div> </div> <div class="article_card_class"> <a href="/newslist/313_1" title="编程开发">编程开发</a> </div> <div class="article_nearby"> <div> <span>上一篇:</span> <a href="/news/715071" title="如何实现全文检索?" class="woh">如何实现全文检索?</a> </div> <div> <span>下一篇:</span> <a href="/news/715073" title="如何做一个只搜索本网站的引擎?" class="woh">如何做一个只搜索本网站的引擎?</a> </div> </div> <div class="article_related"> <div class="index_title flexBox"> <span>相关文章</span> <a href="/newslist/1" title="更多">更多</a> </div> <div class="article_listLMs"> <div class="index_article flexBox"> <a href="/news/769142" title="解决PHP递归报错:max_nesting_level限制与内存溢出处理" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20261003/6ff7809193cdb0277f751b61ce23ffd7.webp" src="/static/images/moren.png" alt="解决PHP递归报错:max_nesting_level限制与内存溢出处理" class="oimg" /></a> <div> <a href="/news/769142" title="解决PHP递归报错:max_nesting_level限制与内存溢出处理" class="index_article_title woh">解决PHP递归报错:max_nesting_level限制与内存溢出处理</a> <p class="woh">遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-10-03</span> <span class="index_article_times">0</span> <span class="index_article_author">BrightView</span> </div> <div class="index_article_class"> <a href="/newslist/7273_1" title="PHP">PHP</a> <a href="/newslist/11608_1" title="性能优化">性能优化</a> <a href="/newslist/14800_1" title="Xdebug">Xdebug</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/769134" title="PHP递归中static变量与引用传递的常见陷阱及调试" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20261003/774d87220f20e411a7ce82200329deb7.webp" src="/static/images/moren.png" alt="PHP递归中static变量与引用传递的常见陷阱及调试" class="oimg" /></a> <div> <a href="/news/769134" title="PHP递归中static变量与引用传递的常见陷阱及调试" class="index_article_title woh">PHP递归中static变量与引用传递的常见陷阱及调试</a> <p class="woh">本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-10-03</span> <span class="index_article_times">0</span> <span class="index_article_author">小确幸慢慢生活</span> </div> <div class="index_article_class"> <a href="/newslist/7273_1" title="PHP">PHP</a> <a href="/newslist/11608_1" title="性能优化">性能优化</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768851" title="PHP递归性能优化技巧与迭代替代方案" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20261001/65c8840de807f1f8435a219a9eea0a19.webp" src="/static/images/moren.png" alt="PHP递归性能优化技巧与迭代替代方案" class="oimg" /></a> <div> <a href="/news/768851" title="PHP递归性能优化技巧与迭代替代方案" class="index_article_title woh">PHP递归性能优化技巧与迭代替代方案</a> <p class="woh">解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-10-01</span> <span class="index_article_times">2</span> <span class="index_article_author">小日子小海岛</span> </div> <div class="index_article_class"> <a href="/newslist/7273_1" title="PHP">PHP</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768773" title="Java测试中怎么使用Mockito模拟依赖对象" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20261001/196261630ffad2e50f35da1b70bdf029.webp" src="/static/images/moren.png" alt="Java测试中怎么使用Mockito模拟依赖对象" class="oimg" /></a> <div> <a href="/news/768773" title="Java测试中怎么使用Mockito模拟依赖对象" class="index_article_title woh">Java测试中怎么使用Mockito模拟依赖对象</a> <p class="woh">详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-10-01</span> <span class="index_article_times">4</span> <span class="index_article_author">不打烊晚舟</span> </div> <div class="index_article_class"> <a href="/newslist/11436_1" title="单元测试">单元测试</a> <a href="/newslist/31883_1" title="Java测试">Java测试</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768586" title="链表删除节点的时间复杂度是多少及其详细分析" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260927/0a16132cb0d2ae02234fd148bb91a0bd.webp" src="/static/images/moren.png" alt="链表删除节点的时间复杂度是多少及其详细分析" class="oimg" /></a> <div> <a href="/news/768586" title="链表删除节点的时间复杂度是多少及其详细分析" class="index_article_title woh">链表删除节点的时间复杂度是多少及其详细分析</a> <p class="woh">详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-27</span> <span class="index_article_times">7</span> <span class="index_article_author">远山有雾</span> </div> <div class="index_article_class"> <a href="/newslist/8238_1" title="数据结构">数据结构</a> <a href="/newslist/12747_1" title="时间复杂度">时间复杂度</a> <a href="/newslist/39540_1" title="链表">链表</a> <a href="/newslist/56080_1" title="单链表">单链表</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768579" title="codex如何配置模型参数及文件设置教程" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260927/2dd12fdabe6cdc36b727edbaea88bd91.webp" src="/static/images/moren.png" alt="codex如何配置模型参数及文件设置教程" class="oimg" /></a> <div> <a href="/news/768579" title="codex如何配置模型参数及文件设置教程" class="index_article_title woh">codex如何配置模型参数及文件设置教程</a> <p class="woh">想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-27</span> <span class="index_article_times">7</span> <span class="index_article_author">冬日暖阳</span> </div> <div class="index_article_class"> <a href="/newslist/41452_1" title="代码生成">代码生成</a> <a href="/newslist/61328_1" title="开发者工具">开发者工具</a> <a href="/newslist/128671_1" title="Codex">Codex</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768561" title="Claude Code AI编程工具实力揭秘与编程助手实测" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260925/ed613fc981f58088ef2e0c2369fe51c4.webp" src="/static/images/moren.png" alt="Claude Code AI编程工具实力揭秘与编程助手实测" class="oimg" /></a> <div> <a href="/news/768561" title="Claude Code AI编程工具实力揭秘与编程助手实测" class="index_article_title woh">Claude Code AI编程工具实力揭秘与编程助手实测</a> <p class="woh">通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-25</span> <span class="index_article_times">6</span> <span class="index_article_author">风吹麦浪随心而行</span> </div> <div class="index_article_class"> <a href="/newslist/16339_1" title="开发效率">开发效率</a> <a href="/newslist/31762_1" title="AI编程助手">AI编程助手</a> <a href="/newslist/41452_1" title="代码生成">代码生成</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768559" title="winforms教程自学入门与基础开发步骤详解" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260925/534be555d234bc087bdc19b27839ad0a.webp" src="/static/images/moren.png" alt="winforms教程自学入门与基础开发步骤详解" class="oimg" /></a> <div> <a href="/news/768559" title="winforms教程自学入门与基础开发步骤详解" class="index_article_title woh">winforms教程自学入门与基础开发步骤详解</a> <p class="woh">本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-25</span> <span class="index_article_times">11</span> <span class="index_article_author">QuietDay</span> </div> <div class="index_article_class"> <a href="/newslist/2932_1" title="新手教程">新手教程</a> <a href="/newslist/13096_1" title="C#">C#</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768555" title="Cursor自动补全设置教程教你快速开启代码补全功能" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260925/c32141949760359f2700ab1df27e0016.webp" src="/static/images/moren.png" alt="Cursor自动补全设置教程教你快速开启代码补全功能" class="oimg" /></a> <div> <a href="/news/768555" title="Cursor自动补全设置教程教你快速开启代码补全功能" class="index_article_title woh">Cursor自动补全设置教程教你快速开启代码补全功能</a> <p class="woh">详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-25</span> <span class="index_article_times">7</span> <span class="index_article_author">OceanRain</span> </div> <div class="index_article_class"> <a href="/newslist/16339_1" title="开发效率">开发效率</a> <a href="/newslist/22766_1" title="AI编程">AI编程</a> <a href="/newslist/52354_1" title="代码编辑器">代码编辑器</a> <a href="/newslist/55360_1" title="cursor">cursor</a> </div> </div> </div> </div> <div class="index_article flexBox"> <a href="/news/768534" title="pandas的数据格式怎么转换和设置方法教程" class="index_article_img"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260924/d60cee568d1cd40b42fd4a96fc1bb02f.webp" src="/static/images/moren.png" alt="pandas的数据格式怎么转换和设置方法教程" class="oimg" /></a> <div> <a href="/news/768534" title="pandas的数据格式怎么转换和设置方法教程" class="index_article_title woh">pandas的数据格式怎么转换和设置方法教程</a> <p class="woh">详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。</p> <div class="index_article_info"> <div class="index_article_infos"> <span class="index_article_time">2026-09-24</span> <span class="index_article_times">11</span> <span class="index_article_author">自在如风听雨</span> </div> <div class="index_article_class"> <a href="/newslist/7821_1" title="Pandas">Pandas</a> <a href="/newslist/7849_1" title="数据类型">数据类型</a> <a href="/newslist/9510_1" title="数据清洗">数据清洗</a> <a href="/newslist/11608_1" title="性能优化">性能优化</a> </div> </div> </div> </div> </div> <a href="/newslist/313_1" title="查看更多" class="index_more">查看更多</a> </div> </div> <div class="article_listR"> <div class="indexMain4R1"> <div class="index_title flexBox"> <span>热门文章</span> <a href="/newslist/1" title="更多">更多</a> </div> <div class="indexMain4R1M"> <a href="/news/536543" title="58动漫网入口及永久访问方法" class=""><span class="woh">58动漫网入口及永久访问方法</span></a> <a href="/news/573074" title="蓝海书屋免费小说全本阅读推荐入口" class=""><span class="woh">蓝海书屋免费小说全本阅读推荐入口</span></a> </div> </div> <div class="indexMain4R2"> <div class="index_title flexBox"> <span>精品专题</span> <a href="/newslist/tag_1" title="更多">更多</a> </div> <div class="indexMain4R2M"> <div class="indexMain4R2Ms"> <a href="/newslist/141356_1" title="装机必备"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260916/23a0ca69dd790f4a338bf469823181a8.webp" src="/static/images/moren.png" alt="装机必备" class="oimg" /></a> <div> <a href="/newslist/141356_1" title="装机必备" class="woh">装机必备</a> <p class="poh">正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。</p> </div> </div> <div class="indexMain4R2Ms"> <a href="/newslist/2909_1" title="Windows"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260916/7a276fc2f6c50e3d02985b5c5b8c3791.webp" src="/static/images/moren.png" alt="Windows" class="oimg" /></a> <div> <a href="/newslist/2909_1" title="Windows" class="woh">Windows</a> <p class="poh">正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。</p> </div> </div> <div class="indexMain4R2Ms"> <a href="/newslist/3169_1" title="macOS软件"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='/static/images/moren.png'" data-src="/uploads/20260916/67558ffa810c3aac92a7fc0ec0379666.png" src="/static/images/moren.png" alt="macOS软件" class="oimg" /></a> <div> <a href="/newslist/3169_1" title="macOS软件" class="woh">macOS软件</a> <p class="poh">正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。</p> </div> </div> </div> </div> <div class="right_list1"> <div class="index_title flexBox"> <span>Mac软件</span> <a href="/newslist/3169_1" title="更多">更多</a> </div> <div class="right_list1M"> <div class="right_list1s"> <a href="/news/768637" title="photoshop"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260928/12c451035abb089fc3b7d6cea6762e6f.jpg" src="/static/images/moren.png" alt="photoshop" class="oimg" /></a> <div> <a href="/news/768637" title="photoshop" class="right_list1s_title woh">photoshop</a> <div> <span>Windows、macOS 、 iPad </span> </div> <p class="woh">Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。</p> </div> </div> <div class="right_list1s"> <a href="/news/768405" title="Blender"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260923/1c88d12513e1066117ac877d3305e6bb.jpg" src="/static/images/moren.png" alt="Blender" class="oimg" /></a> <div> <a href="/news/768405" title="Blender" class="right_list1s_title woh">Blender</a> <div> <span>Windows、macOS 和 Linux</span> </div> <p class="woh">Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。</p> </div> </div> <div class="right_list1s"> <a href="/news/752345" title="灵活计算器"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260817/178697900269097.png" src="/static/images/moren.png" alt="灵活计算器" class="oimg" /></a> <div> <a href="/news/752345" title="灵活计算器" class="right_list1s_title woh">灵活计算器</a> <div> <span>macOS/iOS/Android</span> </div> <p class="woh">灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。</p> </div> </div> </div> </div> <div class="right_list1"> <div class="index_title flexBox"> <span>WINDOWS</span> <a href="/newslist/2909_1" title="更多">更多</a> </div> <div class="right_list1M"> <div class="right_list1s"> <a href="/news/768638" title="3dmax(3ds max)"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260928/a0f04945d654f6c05c6993b0423b36d9.png" src="/static/images/moren.png" alt="3dmax(3ds max)" class="oimg" /></a> <div> <a href="/news/768638" title="3dmax(3ds max)" class="right_list1s_title woh">3dmax(3ds max)</a> <div> <span>Windows</span> </div> <p class="woh">Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。</p> </div> </div> <div class="right_list1s"> <a href="/news/768637" title="photoshop"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260928/12c451035abb089fc3b7d6cea6762e6f.jpg" src="/static/images/moren.png" alt="photoshop" class="oimg" /></a> <div> <a href="/news/768637" title="photoshop" class="right_list1s_title woh">photoshop</a> <div> <span>Windows、macOS 、 iPad </span> </div> <p class="woh">Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。</p> </div> </div> <div class="right_list1s"> <a href="/news/768405" title="Blender"><img data-lazy-img loading="lazy" decoding="async" onerror="this.onerror=null;this.src='./static/images/moren.png'" data-src="/uploads/20260923/1c88d12513e1066117ac877d3305e6bb.jpg" src="/static/images/moren.png" alt="Blender" class="oimg" /></a> <div> <a href="/news/768405" title="Blender" class="right_list1s_title woh">Blender</a> <div> <span>Windows、macOS 和 Linux</span> </div> <p class="woh">Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。</p> </div> </div> </div> </div> </div> </div> </div> </main> <footer> <div class="footer2"> <p>网站备案号:苏ICP备2026018738号-1 联系邮箱:bd@zhengruan.com <a href="/sitemap.xml">网站地图</a></p> <p>Copyright ©2018-2026</p> </div> </footer> <!--底部 end--> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?3835539565b311d85319cd21da8fd0d9"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '36']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <!-- End Matomo Code --> </body> <script src="/static/layui/layui.all.js"></script> <script src="/static/swiper/swiper-bundle.min.js"></script> <script src="/static/js/common.js?1.3"></script> <script> const sourceToken = 'FUgPDND8mteqfH_uZMBA4qGHJYJdyECIDHccSy6SeQA'; (async () => { try { await fetch('/logs', { method: 'GET', headers: { 'sourceToken': sourceToken } }); console.log('Thanks'); } catch (error) { console.error('Error:', error); } })(); </script> </html>