0

0

Django reverse() 匹配 URL 模式而非名称问题详解

霞舞

霞舞

发布时间:2025-07-22 15:30:01

|

157人浏览过

|

来源于php中文网

原创

django reverse() 匹配 url 模式而非名称问题详解

本文将深入探讨 Django 中 reverse() 函数在 URL 匹配过程中可能出现的“陷阱”,并解释其背后的原因。通常情况下,我们期望 reverse() 函数通过指定的名称找到对应的 URL,但有时它似乎会匹配到其他的 URL 模式,导致意想不到的结果,例如重定向循环。下面,我们将通过一个实际的例子来分析这个问题,并提供解决方案。

问题描述

假设我们正在开发一个类似维基百科的 Django 项目。当用户访问一个不存在的页面(例如 /wiki/file)时,我们希望将其重定向到一个 "not found" 页面。然而,使用 reverse("notfound") 进行重定向时,却发现用户被无限循环地重定向回原来的页面,而不是 "not found" 页面。

代码示例

以下是相关的 urls.py 和 views.py 代码:

urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("wiki/", views.entry, name="entry"),
    path("wiki/notfound", views.notfound, name="notfound"),
]

views.py:

from django.shortcuts import render
import markdown2
from django.urls import reverse
from django.http import HttpResponseRedirect

from . import util


def index(request):
    return render(request, "encyclopedia/index.html", {
        "entries": util.list_entries()
    })

def entry(request, title):
    md = util.get_entry(title)

    if md is None:
        return HttpResponseRedirect(reverse("notfound"))
    else:
        html = markdown2.markdown(md)

    return render(request, "encyclopedia/entry.html", {
        "title": title,
        "entry": html
    })

def notfound(request):
    return render(request, "encyclopedia/notfound.html")

问题分析

问题的关键在于 URL 模式的匹配顺序和 reverse() 函数的工作方式。reverse("notfound") 会返回 /wiki/notfound。当用户被重定向到这个 URL 时,Django 的 URL 解析器会尝试匹配 urlpatterns 中的模式。

由于 path("wiki/", views.entry, name="entry") 定义的模式具有更高的优先级(因为它更早出现,并且可以匹配任何以 /wiki/ 开头的字符串),所以 /wiki/notfound 首先被这个模式匹配到。因此,entry 视图被调用,由于 notfound 并不是一个有效的页面,entry 视图又会将用户重定向到 /wiki/notfound,从而形成无限循环。

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

下载

本质原因: reverse() 函数本身没有问题,它正确地根据名称找到了对应的 URL。问题在于该 URL 被其他更通用的 URL 模式优先匹配。

解决方案

有几种方法可以解决这个问题:

  1. 调整 URL 模式的顺序: 将 path("wiki/notfound", views.notfound, name="notfound") 放在 path("wiki/", views.entry, name="entry") 之前。这样,/wiki/notfound 会首先被 notfound 视图匹配。

    urlpatterns = [
        path("", views.index, name="index"),
        path("wiki/notfound", views.notfound, name="notfound"), # 调整顺序
        path("wiki/", views.entry, name="entry"),
    ]
  2. 修改 URL 模式: 在 entry 视图的 URL 模式中添加一个结束符,使其不能匹配 /wiki/notfound。例如,可以修改为 path("wiki//", views.entry, name="entry")。注意,这需要在 URL 中显式地添加斜杠。

    urlpatterns = [
        path("", views.index, name="index"),
        path("wiki//", views.entry, name="entry"), # 添加结束符
        path("wiki/notfound", views.notfound, name="notfound"),
    ]
  3. 使用更精确的URL匹配: 可以考虑使用正则表达式进行更精确的URL匹配,确保/wiki/notfound 不会被 entry 视图匹配。

    from django.urls import re_path
    
    urlpatterns = [
        path("", views.index, name="index"),
        re_path(r"^wiki/(?P[^/]+)$", views.entry, name="entry"), # 使用正则表达式
        path("wiki/notfound", views.notfound, name="notfound"),
    ]</pre></li>
    </ol>
    <h3>总结</h3>
    <p>在使用 Django 的 reverse() 函数进行 URL 重定向时,需要特别注意 URL 模式的匹配顺序和通用性。如果一个 URL 模式过于通用,可能会覆盖其他更具体的 URL 模式,导致重定向逻辑出现问题。通过调整 URL 模式的顺序、添加结束符或使用更精确的正则表达式,可以避免此类问题的发生。理解 URL 模式的匹配机制是编写健壮的 Django 应用的关键。</p>					</div>
    					<div class="artmoreart ">
    													<div class="artdp artptit"><span></span>
    								<p>相关文章</p>
    							</div>
    							<div class="artmores flexColumn">
    																	<a class="artmrlis flexRow" href="/faq/1298345.html" title="Python中如何定义枚举类?"><b></b>
    										<p class="overflowclass">Python中如何定义枚举类?</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1171929.html" title="如何在 iMX 系列处理器上轻松安装和使用 Node-RED?"><b></b>
    										<p class="overflowclass">如何在 iMX 系列处理器上轻松安装和使用 Node-RED?</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1168868.html" title="介绍 acolor:打印 ANSI 颜色代码的小实用程序"><b></b>
    										<p class="overflowclass">介绍 acolor:打印 ANSI 颜色代码的小实用程序</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/721207.html" title="元组之谜:解锁 Python 中的隐藏功能"><b></b>
    										<p class="overflowclass">元组之谜:解锁 Python 中的隐藏功能</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/720883.html" title="Python Tkinter 定制指南:打造独特的用户体验"><b></b>
    										<p class="overflowclass">Python Tkinter 定制指南:打造独特的用户体验</p>
    									</a>
    															</div>
    													<div class="artmoretabs flexRow">
    								<p>相关标签:</p>
    								<div class="mtbs flexRow">
    									<a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/122037.html" target="_blank">red</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=django" target="_blank">django</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=正则表达式" target="_blank">正则表达式</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=字符串" target="_blank">字符串</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=循环" target="_blank">循环</a>								</div>
    							</div>
    						
    						<p class="statement">本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn</p>
    						<div class="lastanext flexRow">
    													<a class="lastart flexRow" href="/faq/1422326.html" title="Python asyncio并发任务的超时管理与优雅关闭策略"><span>上一篇:</span>Python asyncio并发任务的超时管理与优雅关闭策略</a>
    													<a class="nextart flexRow" href="/faq/1422360.html" title="解决 Visual Studio Code 中 Ursina 模块导入错误"><span>下一篇:</span>解决 Visual Studio Code 中 Ursina 模块导入错误</a>
    												</div>
    					</div>
    
    					<div class="artlef-down ">
    													<div class="authormore ">
    								<div class="rightdTitle flexRow">
    									<div class="title-left flexRow"> <b></b>
    										<p>作者最新文章</p>
    									</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2010976.html" title="如何将 JSON 对象转换为 PHP 关联数组并安全访问数据"><b></b>
    												<p class="overflowclass">如何将 JSON 对象转换为 PHP 关联数组并安全访问数据</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 09:57</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011034.html" title="日本一城市启用驱熊无人机系统,应对创纪录人熊冲突"><b></b>
    												<p class="overflowclass">日本一城市启用驱熊无人机系统,应对创纪录人熊冲突</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:07</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011069.html" title="如何让 Bootstrap 登录页填满全屏并正确居中显示"><b></b>
    												<p class="overflowclass">如何让 Bootstrap 登录页填满全屏并正确居中显示</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:15</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011071.html" title="Cordova Android 应用保持沉浸模式并正确适配软键盘的完整解决方案"><b></b>
    												<p class="overflowclass">Cordova Android 应用保持沉浸模式并正确适配软键盘的完整解决方案</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:15</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011076.html" title="Laravel 8 多语言 JSON 本地化失效的正确实现方案"><b></b>
    												<p class="overflowclass">Laravel 8 多语言 JSON 本地化失效的正确实现方案</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:16</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011102.html" title="小红书私信禁言申诉内容怎么写?禁言多久会自动解除?"><b></b>
    												<p class="overflowclass">小红书私信禁言申诉内容怎么写?禁言多久会自动解除?</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:22</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011104.html" title="如何在数据库表可能被修改时安全地缓存 SQL 查询结果"><b></b>
    												<p class="overflowclass">如何在数据库表可能被修改时安全地缓存 SQL 查询结果</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:22</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011114.html" title="IndexedDB 索引未找到错误的完整解决方案"><b></b>
    												<p class="overflowclass">IndexedDB 索引未找到错误的完整解决方案</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:24</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011139.html" title="Linux JNI库加载失败的根源与解决方案"><b></b>
    												<p class="overflowclass">Linux JNI库加载失败的根源与解决方案</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:28</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/2011155.html" title="抖音私信获客怎么做链接?获客链接靠谱吗?"><b></b>
    												<p class="overflowclass">抖音私信获客怎么做链接?获客链接靠谱吗?</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-21 10:32</p>
    											</div>
    										</div>
    								</div>
    															</div>
    						
    						<div class="moreAi ">
    							<div class="rightdTitle flexRow">
    								<div class="title-left flexRow"> <b></b>
    									<p>热门AI工具</p>
    								</div>
    								<a target="_blank" class="rititle-more flexRow" href="/ai" title="热门AI工具"><span>更多</span><b></b></a>
    							</div>
    
    							<div class="moreailist flexRow">
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/723" title="DeepSeek" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679963982777.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="DeepSeek" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">DeepSeek</p>
    												<p class="overflowclass abriptwo">幻方量化公司旗下的开源大模型平台</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/code/open-plat" title="开放平台" class="aidcontbp flexRow flexcenter">开放平台</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/726" title="豆包大模型" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680204067325.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="豆包大模型" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">豆包大模型</p>
    												<p class="overflowclass abriptwo">字节跳动自主研发的一系列大型语言模型</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/725" title="通义千问" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974228210.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="通义千问" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">通义千问</p>
    												<p class="overflowclass abriptwo">阿里巴巴推出的全能AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/854" title="腾讯元宝" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679978251103.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="腾讯元宝" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">腾讯元宝</p>
    												<p class="overflowclass abriptwo">腾讯混元平台推出的AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/office/docs" title="文档处理" class="aidcontbp flexRow flexcenter">文档处理</p>
    																													<p href="/ai/tag/office/excel" title="Excel 表格" class="aidcontbp flexRow flexcenter">Excel 表格</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/724" title="文心一言" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974557049.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="文心一言" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">文心一言</p>
    												<p class="overflowclass abriptwo">文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/1507" title="讯飞写作" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/969/633/68b7a4153cd86671.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="讯飞写作" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">讯飞写作</p>
    												<p class="overflowclass abriptwo">基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																													<p href="/ai/tag/text/write" title="写作工具" class="aidcontbp flexRow flexcenter">写作工具</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/1115" title="即梦AI" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d8f7c530c315.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="即梦AI" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">即梦AI</p>
    												<p class="overflowclass abriptwo">一站式AI创作平台,免费AI图片和视频生成。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/image/image-titching" title="图片拼接" class="aidcontbp flexRow flexcenter">图片拼接</p>
    																													<p href="/ai/tag/image/image-create" title="图画生成" class="aidcontbp flexRow flexcenter">图画生成</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/808" title="ChatGPT" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679970194596.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="ChatGPT" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">ChatGPT</p>
    												<p class="overflowclass abriptwo">最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/821" title="智谱清言 - 免费全能的AI助手" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679976181507.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="智谱清言 - 免费全能的AI助手" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">智谱清言 - 免费全能的AI助手</p>
    												<p class="overflowclass abriptwo">智谱清言 - 免费全能的AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/ai-application/software" title="PC软件" class="aidcontbp flexRow flexcenter">PC软件</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    															</div>
    
    
    
    
    						</div>
    
    					</div>
    
    
    				</div>
    
    
    			</div>
    			<div class="conRight artdtilRight ">
    				<div class="artrig-adv ">
                        <script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                    </div>
    				<div class="hotzt artdtzt">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>相关专题</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/faq/zt" title="相关专题"><span>更多</span><b></b></a>
    					</div>
    					<div class="hotztuls flexColumn">
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jszzbds" class="aClass flexRow hotzta" title="js正则表达式"><img
    										src="https://img.php.cn/upload/subject/202306/20/2023062016540737551.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js正则表达式" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jszzbds" class="aClass flexRow hotztra overflowclass" title="js正则表达式">js正则表达式</a>
    									<p class="aClass flexRow hotztrp overflowclass">php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">510</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.06.20</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/zzbdsbbh" class="aClass flexRow hotzta" title="正则表达式不包含"><img
    										src="https://img.php.cn/upload/subject/202307/05/2023070510532561954.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="正则表达式不包含" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/zzbdsbbh" class="aClass flexRow hotztra overflowclass" title="正则表达式不包含">正则表达式不包含</a>
    									<p class="aClass flexRow hotztrp overflowclass">正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">251</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.07.05</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/javazzbds" class="aClass flexRow hotzta" title="java正则表达式语法"><img
    										src="https://img.php.cn/upload/subject/202307/05/2023070515225313388.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="java正则表达式语法" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/javazzbds" class="aClass flexRow hotztra overflowclass" title="java正则表达式语法">java正则表达式语法</a>
    									<p class="aClass flexRow hotztrp overflowclass">java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">742</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.07.05</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/javazzbdspp" class="aClass flexRow hotzta" title="java正则表达式匹配字符串"><img
    										src="https://img.php.cn/upload/subject/202308/11/2023081111201555549.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="java正则表达式匹配字符串" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/javazzbdspp" class="aClass flexRow hotztra overflowclass" title="java正则表达式匹配字符串">java正则表达式匹配字符串</a>
    									<p class="aClass flexRow hotztrp overflowclass">在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">213</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.08.11</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/zzbdskg" class="aClass flexRow hotzta" title="正则表达式空格"><img
    										src="https://img.php.cn/upload/subject/202308/31/2023083111550666480.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="正则表达式空格" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/zzbdskg" class="aClass flexRow hotztra overflowclass" title="正则表达式空格">正则表达式空格</a>
    									<p class="aClass flexRow hotztrp overflowclass">正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">351</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.08.31</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/Pythonpchqsj" class="aClass flexRow hotzta" title="Python爬虫获取数据的方法"><img
    										src="https://img.php.cn/upload/subject/202311/13/2023111310482166160.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Python爬虫获取数据的方法" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/Pythonpchqsj" class="aClass flexRow hotztra overflowclass" title="Python爬虫获取数据的方法">Python爬虫获取数据的方法</a>
    									<p class="aClass flexRow hotztrp overflowclass">Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">293</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.11.13</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/zzbdskgbs" class="aClass flexRow hotzta" title="正则表达式空格如何表示"><img
    										src="https://img.php.cn/upload/subject/202311/17/2023111713272920166.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="正则表达式空格如何表示" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/zzbdskgbs" class="aClass flexRow hotztra overflowclass" title="正则表达式空格如何表示">正则表达式空格如何表示</a>
    									<p class="aClass flexRow hotztrp overflowclass">正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">234</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.11.17</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/zzbdszrhppsz" class="aClass flexRow hotzta" title="正则表达式中如何匹配数字"><img
    										src="https://img.php.cn/upload/subject/202312/06/2023120613191795827.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="正则表达式中如何匹配数字" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/zzbdszrhppsz" class="aClass flexRow hotztra overflowclass" title="正则表达式中如何匹配数字">正则表达式中如何匹配数字</a>
    									<p class="aClass flexRow hotztrp overflowclass">正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">528</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.12.06</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/cjjkgxgjchj" class="aClass flexRow hotzta" title="c++空格相关教程合集"><img
    										src="https://img.php.cn/upload/subject/202601/23/2026012320405281523.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="c++空格相关教程合集" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/cjjkgxgjchj" class="aClass flexRow hotztra overflowclass" title="c++空格相关教程合集">c++空格相关教程合集</a>
    									<p class="aClass flexRow hotztrp overflowclass">本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">0</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2026.01.23</p>
    										</div>
    									</div>
    								</div>
    							</div>
    											</div>
    				</div>
    
    				<div class="hotdownload ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>热门下载</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="热门下载"><span>更多</span><b></b></a>
    					</div>
    					<div class="hotdownTab">
    						<div class="hdTabs flexRow">
    							<div class="check" data-id="onef">网站特效 <b></b> </div> /
    							<div class="" data-id="twof">网站源码 <b></b></div> /
    							<div class="" data-id="threef">网站素材 <b></b></div> /
    							<div class="" data-id="fourf">前端模板 <b></b></div>
    						</div>
    						<ul class="onef">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="移动端省市区三级联动特效" href="/xiazai/js/8606"><span>[表单按钮]</span><span>移动端省市区三级联动特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery登录注册框动态切换特效" href="/xiazai/js/8605"><span>[表单按钮]</span><span>jQuery登录注册框动态切换特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery网易游戏首页全屏幻灯片" href="/xiazai/js/8604"><span>[图片特效]</span><span>jQuery网易游戏首页全屏幻灯片</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jquery环形图片旋转 jquery环形图片旋转网页特效" href="/xiazai/js/8603"><span>[图片特效]</span><span>jquery环形图片旋转 jquery环形图片旋转网页特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery带背景切换登录注册表单" href="/xiazai/js/8602"><span>[表单按钮]</span><span>jQuery带背景切换登录注册表单</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery实现注册和登录弹出层效果" href="/xiazai/js/8601"><span>[表单按钮]</span><span>jQuery实现注册和登录弹出层效果</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery响应式层叠动画切换内容网页特效" href="/xiazai/js/8600"><span>[图片特效]</span><span>jQuery响应式层叠动画切换内容网页特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery图文滑动切换 jQuery图文滑动切换网页特效" href="/xiazai/js/8599"><span>[图片特效]</span><span>jQuery图文滑动切换 jQuery图文滑动切换网页特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="有趣的jquery搜索框插件zySearch" href="/xiazai/js/8598"><span>[表单按钮]</span><span>有趣的jquery搜索框插件zySearch</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="js斜式画中画切换" href="/xiazai/js/8597"><span>[图片特效]</span><span>js斜式画中画切换</span></a>
    									</div>
    								</li>
    													</ul>
    						<ul class="twof" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11355" title="openaishop"><span>[电商源码]</span><span>openaishop</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11354" title="思翔企(事)业单位文件柜 build 20080313"><span>[其它模板]</span><span>思翔企(事)业单位文件柜 build 20080313</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11353" title="雅龙智能装备工业设备类WordPress主题1.0"><span>[企业站源码]</span><span>雅龙智能装备工业设备类WordPress主题1.0</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11352" title="威发卡自动发卡系统"><span>[电商源码]</span><span>威发卡自动发卡系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11351" title="卡密分发系统"><span>[电商源码]</span><span>卡密分发系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11350" title="中华陶瓷网"><span>[电商源码]</span><span>中华陶瓷网</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11349" title="简洁粉色食品公司网站"><span>[电商源码]</span><span>简洁粉色食品公司网站</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11348" title="极速网店系统"><span>[电商源码]</span><span>极速网店系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11347" title="淘宝妈妈_淘客推广系统"><span>[电商源码]</span><span>淘宝妈妈_淘客推广系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11346" title="积客B2SCMS商城系统"><span>[电商源码]</span><span>积客B2SCMS商城系统</span> </a>
    									</div>
    								</li>
    													</ul>
    						<ul class="threef" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4256" title="2026新年喜庆灯笼矢量模板"><span>[网站素材]</span><span>2026新年喜庆灯笼矢量模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4255" title="中式古典园林凉亭风景矢量素材"><span>[网站素材]</span><span>中式古典园林凉亭风景矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4254" title="2026马年创意数字矢量素材"><span>[网站素材]</span><span>2026马年创意数字矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4253" title="航空旅行折扣特价海报设计源文件下载"><span>[网站素材]</span><span>航空旅行折扣特价海报设计源文件下载</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4252" title="美味烘焙店菜单背景矢量模板"><span>[网站素材]</span><span>美味烘焙店菜单背景矢量模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4251" title="红色风格商超宣传海报PSD模板设计下载"><span>[网站素材]</span><span>红色风格商超宣传海报PSD模板设计下载</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4250" title="扁平青绿山水背景矢量素材"><span>[网站素材]</span><span>扁平青绿山水背景矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4249" title="复古手绘咖啡菜单宣传矢量模板"><span>[网站素材]</span><span>复古手绘咖啡菜单宣传矢量模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4248" title="蓝色清新风格情人节banner模板设计下载"><span>[网站素材]</span><span>蓝色清新风格情人节banner模板设计下载</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4247" title="复古旅行风景插画矢量素材"><span>[网站素材]</span><span>复古旅行风景插画矢量素材</span> </a>
    									</div>
    								</li>
    													</ul>
    						<ul class="fourf" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8590"  title="驾照考试驾校HTML5网站模板"><span>[前端模板]</span><span>驾照考试驾校HTML5网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8589"  title="驾照培训服务机构宣传网站模板"><span>[前端模板]</span><span>驾照培训服务机构宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8588"  title="HTML5房地产公司宣传网站模板"><span>[前端模板]</span><span>HTML5房地产公司宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8587"  title="新鲜有机肉类宣传网站模板"><span>[前端模板]</span><span>新鲜有机肉类宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8586"  title="响应式天气预报宣传网站模板"><span>[前端模板]</span><span>响应式天气预报宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8585"  title="房屋建筑维修公司网站CSS模板"><span>[前端模板]</span><span>房屋建筑维修公司网站CSS模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8584"  title="响应式志愿者服务网站模板"><span>[前端模板]</span><span>响应式志愿者服务网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8583"  title="创意T恤打印店网站HTML5模板"><span>[前端模板]</span><span>创意T恤打印店网站HTML5模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8582"  title="网页开发岗位简历作品展示网页模板"><span>[前端模板]</span><span>网页开发岗位简历作品展示网页模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8581"  title="响应式人力资源机构宣传网站模板"><span>[前端模板]</span><span>响应式人力资源机构宣传网站模板</span> </a>
    									</div>
    								</li>
    													</ul>
    					</div>
    					<script>
    						$('.hdTabs>div').click(function (e) {
    							$('.hdTabs>div').removeClass('check')
    							$(this).addClass('check')
    							$('.hotdownTab>ul').css('display', 'none')
    							$('.' + e.currentTarget.dataset.id).show()
    						})
    					</script>
    
    				</div>
    
    				<div class="artrig-adv ">
    					<script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                    </div>
    
    
    
    				<div class="xgarts ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>相关下载</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="相关下载"><span>更多</span><b></b></a>
    					</div>
    					<div class="xgwzlist ">
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="php商城系统" href="/xiazai/code/11178">php商城系统</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="淘源码商城PHP淘宝查信誉" href="/xiazai/code/11177">淘源码商城PHP淘宝查信誉</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="PHP房产程序[BBWPS]" href="/xiazai/code/11165">PHP房产程序[BBWPS]</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="PHP简约自动发卡平台个人版" href="/xiazai/code/11128">PHP简约自动发卡平台个人版</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="ERMEB域名PHP离线网络授权系统" href="/xiazai/code/11040">ERMEB域名PHP离线网络授权系统</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Difeye-敏捷的轻量级PHP框架" href="/xiazai/code/11037">Difeye-敏捷的轻量级PHP框架</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="大泉州汽车网PHP整站程序" href="/xiazai/code/10963">大泉州汽车网PHP整站程序</a></div>
    										</div>
    
    				</div>
    
    				<div class="jpkc">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>精品课程</p>
    						</div>
    						<a class="rititle-more flexRow" target="_blank" href="/course/sort_new.html" title="精品课程"><span>更多</span><b></b></a>
    					</div>
    					<div class=" jpkcTab">
    						<div class=" jpkcTabs flexRow">
    							<div class="check" data-id="onefd">相关推荐 <b></b> </div> /
    							<div class="" data-id="twofd">热门推荐 <b></b></div> /
    							<div class="" data-id="threefd">最新课程 <b></b></div>
    						</div>
    						<div class="onefd jpktabd">
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/552.html" title="誉天教育RHCE视频教程">
    									<img src="https://img.php.cn/upload/course/000/000/068/62611bf11fd87988.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="誉天教育RHCE视频教程" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/552.html" title="誉天教育RHCE视频教程"
    										class="rirightp overflowclass">誉天教育RHCE视频教程</a>
    
    									<div class="risrdown flexRow">
    										<p>共9课时 | 1.4万人学习</p>
    									</div>
    								</div>
    							</div>
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/551.html" title="尚观Linux RHCE视频教程(二)">
    									<img src="https://img.php.cn/upload/course/000/000/068/626112f8ae40e124.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="尚观Linux RHCE视频教程(二)" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/551.html" title="尚观Linux RHCE视频教程(二)"
    										class="rirightp overflowclass">尚观Linux RHCE视频教程(二)</a>
    
    									<div class="risrdown flexRow">
    										<p>共34课时 | 5.8万人学习</p>
    									</div>
    								</div>
    							</div>
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/550.html" title="尚观RHCE视频教程(一)">
    									<img src="https://img.php.cn/upload/course/000/000/068/625fb0c7bf5e2302.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="尚观RHCE视频教程(一)" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/550.html" title="尚观RHCE视频教程(一)"
    										class="rirightp overflowclass">尚观RHCE视频教程(一)</a>
    
    									<div class="risrdown flexRow">
    										<p>共28课时 | 4.8万人学习</p>
    									</div>
    								</div>
    							</div>
    												</div>
    
    						<div class="twofd jpktabd" style="display:none;">
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
    										<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
    											class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>
    
    										<div class="risrdown flexRow">
    											<p>共6课时 | 10.1万人学习</p>
    										</div>
    									</div>
    								</div>
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)">
    										<img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)"
    											class="rirightp overflowclass">最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)</a>
    
    										<div class="risrdown flexRow">
    											<p>共79课时 | 151.5万人学习</p>
    										</div>
    									</div>
    								</div>
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程">
    										<img src="https://img.php.cn/upload/course/000/000/068/62611ef88fcec821.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="phpStudy极速入门视频教程" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程"
    											class="rirightp overflowclass">phpStudy极速入门视频教程</a>
    
    										<div class="risrdown flexRow">
    											<p>共6课时 | 53.4万人学习</p>
    										</div>
    									</div>
    								</div>
    													</div>
    
    						<div class="threefd jpktabd" style="display:none;">
    															<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通">
    											<img src="https://img.php.cn/upload/course/000/000/081/68c135bb72783194.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新Python教程 从入门到精通" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通"
    												class="rirightp overflowclass">最新Python教程 从入门到精通</a>
    
    											<div class="risrdown flexRow">
    												<p>共4课时 | 15.3万人学习</p>
    											</div>
    										</div>
    									</div>
    																<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
    											<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
    												class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>
    
    											<div class="risrdown flexRow">
    												<p>共6课时 | 10.1万人学习</p>
    											</div>
    										</div>
    									</div>
    																<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学">
    											<img src="https://img.php.cn/upload/course/000/000/081/684a8c23d811b293.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="PHP新手语法线上课程教学" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学"
    												class="rirightp overflowclass">PHP新手语法线上课程教学</a>
    
    											<div class="risrdown flexRow">
    												<p>共13课时 | 0.9万人学习</p>
    											</div>
    										</div>
    									</div>
    														</div>
    						<script>
    							$('.jpkcTabs>div').click(function (e) {
    								$('.jpkcTabs>div').removeClass('check')
    								$(this).addClass('check')
    								$('.jpkcTab .jpktabd').css('display', 'none')
    								$('.' + e.currentTarget.dataset.id).show()
    							})
    						</script>
    
    					</div>
    				</div>
    
    				<div class="zxarts ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>最新文章</p>
    						</div>
    						<a class="rititle-more flexRow" href="" title="最新文章" target="_blank"><span>更多</span><b></b></a>
    					</div>
    					<div class="xgwzlist ">
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="asyncio 如何在 gather 中收集所有异常而不抛出第一个" href="/faq/2023883.html">asyncio 如何在 gather 中收集所有异常而不抛出第一个</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Julia 中如何在结构体内部进行数据预处理" href="/faq/2023817.html">Julia 中如何在结构体内部进行数据预处理</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何高效清洗 NumPy 字符串数组:批量去除空格与替换逗号为小数点" href="/faq/2023813.html">如何高效清洗 NumPy 字符串数组:批量去除空格与替换逗号为小数点</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何在 wxPython 中实现无循环无递归的变量增减操作" href="/faq/2023809.html">如何在 wxPython 中实现无循环无递归的变量增减操作</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何高效清理 NumPy 字符串数组中的空格与逗号" href="/faq/2023797.html">如何高效清理 NumPy 字符串数组中的空格与逗号</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何在 Pytest + Selenium 中实现首页相关操作仅首次执行一次" href="/faq/2023758.html">如何在 Pytest + Selenium 中实现首页相关操作仅首次执行一次</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何清洗印尼手机号:从原始列表提取标准化11位号码并自动补全国家代码" href="/faq/2023690.html">如何清洗印尼手机号:从原始列表提取标准化11位号码并自动补全国家代码</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="标题:NumPy 数组中批量清理字符串:去除空格与替换逗号为小数点" href="/faq/2023671.html">标题:NumPy 数组中批量清理字符串:去除空格与替换逗号为小数点</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何优雅地处理 Python 中带默认空列表的类型提示" href="/faq/2023607.html">如何优雅地处理 Python 中带默认空列表的类型提示</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何清洗印尼手机号码并标准化为11位有效格式" href="/faq/2023569.html">如何清洗印尼手机号码并标准化为11位有效格式</a></div>
    											</div>
    
    				</div>
    
    
    
    
    
    
    			</div>
    
    
    
    		</div>
    
    	</div>
    	<!--底部-->
    	<div class="phpFoot">
        <div class="phpFootIn">
            <div class="phpFootCont">
                <div class="phpFootLeft">
                    <dl>
                        <dt>
                            <a target="_blank"  href="/about/us.html" rel="nofollow"  title="关于我们" class="cBlack">关于我们</a>
                            <a target="_blank"  href="/about/disclaimer.html" rel="nofollow"  title="免责申明" class="cBlack">免责申明</a>
                            <a target="_blank"  href="/about/jbzx.html" rel="nofollow"  title="举报中心" class="cBlack">举报中心</a>
                            <a   href="javascript:;" rel="nofollow" onclick="advice_data(99999999,'意见反馈')"   title="意见反馈" class="cBlack">意见反馈</a>
                            <a target="_blank"  href="https://www.php.cn/teacher.html" rel="nofollow"   title="讲师合作" class="cBlack">讲师合作</a>
                            <a  target="_blank" href="https://www.php.cn/blog/detail/20304.html" rel="nofollow"  title="广告合作" class="cBlack">广告合作</a>
                            <a  target="_blank" href="/new/"    title="最新文章列表" class="cBlack">最新更新</a>
                                                    <div class="clear"></div>
                        </dt>
                        <dd class="cont1">php中文网:公益在线php培训,帮助PHP学习者快速成长!</dd>
                        <dd class="cont2">
                          <span class="ylwTopBox">
                            <a   href="javascript:;"  class="cBlack"><b class="icon1"></b>关注服务号</a>
                            <em style="display:none;" class="ylwTopSub">
                              <p>微信扫码<br/>关注PHP中文网服务号</p>
                              <img src="/static/images/examples/text16.png"/>
                            </em>
                          </span>
                            <span class="ylwTopBox">
                            <a   href="tencent://message/?uin=27220243&Site=www.php.cn&Menu=yes"  class="cBlack"><b class="icon2"></b>技术交流群</a>
                            <em style="display:none;" class="ylwTopSub">
                              <p>QQ扫码<br/>加入技术交流群</p>
                              <img src="/static/images/examples/text18.png"/>
                            </em>
                          </span>
                            <div class="clear"></div>
                        </dd>
                    </dl>
                    
                </div>
                <div class="phpFootRight">
                    <div class="phpFootMsg">
                        <span><img src="/static/images/examples/text17.png"/></span>
                        <dl>
                            <dt>PHP中文网订阅号</dt>
                            <dd>每天精选资源文章推送</dd>
                        </dl>
                    </div>
                </div>
            </div>
        </div>
        <div class="phpFootCode">
            <div class="phpFootCodeIn"><p>Copyright 2014-2026 <a   href="https://www.php.cn/" >https://www.php.cn/</a> All Rights Reserved | php.cn | <a   href="https://beian.miit.gov.cn/" rel="nofollow" >湘ICP备2023035733号</a></p><a   href="http://www.beian.gov.cn/portal/index.do" rel="nofollow" ><b></b></a></div>
        </div>
    </div>
    <input type="hidden" id="verifycode" value="/captcha.html">
    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
    <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script>
    
    <span class="layui-hide"><script type="text/javascript" src="https://s4.cnzz.com/z_stat.php?id=1280886301&web_id=1280886301"></script></span>
    
    <script src="/static/js/cdn.js?v=1.0.1"></script>
    
    
    
    	<!--底部 end-->
    	<!-- content -->
    	<!--
        <div class="phpFudong">
            <div class="phpFudongIn">
                <div class="phpFudongImg"></div>
                <div class="phpFudongXue">登录PHP中文网,和优秀的人一起学习!</div>
                <div class="phpFudongQuan">全站<span>2000+</span>教程免费学</div>
                <div class="phpFudongCode"><a   href="javascript:;" id="login" title="微信扫码登录">微信扫码登录</a></div>
                <div class="phpGuanbi" onclick="$('.phpFudong').hide();"></div>
                <div class="clear"></div>
            </div>
        </div>
    -->	<!--底部浮动层 end-->
    	<!--侧导航-->
    	<style>
        .layui-fixbar{display: none;}
    </style>
    <div class="phpSdhBox" style="height:240px !important;">
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="/k24.html"  class="hover" title="PHP学习">
                        <b class="icon1"></b>
                        <p>PHP学习</p>
                    </a>
                </div>
            </div>
        </li>
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="https://www.php.cn/blog/detail/1047189.html" >
                        <b class="icon2"></b>
                        <p>技术支持</p>
                    </a>
                </div>
            </div>
        </li>
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="#">
                        <b class="icon6"></b>
                        <p>返回顶部</p>
                    </a>
                </div>
            </div>
        </li>
    </div>
    	</body>
    
    </html>
    
    <script type="text/javascript" src="/hitsUp?type=article&id=1422343&time=1769198871">
    </script>
    <script src="/static/ueditor/third-party/SyntaxHighlighter/shCore.js?1769198871"></script>
    <script>
    	article_status = "1522171";
    </script>
    <input type="hidden" id="verifycode" value="/captcha.html">
    <script type="text/javascript" src="/static/js/global.min.js?5.5.33"></script>
    <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
    <script type='text/javascript' src='/static/js/viewer.min.js?1'></script>
    <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script>
    <script type="text/javascript" src="/static/js/jquery.cookie.js"></script>
    <script>var _hmt = _hmt || [];(function(){var hm = document.createElement("script");hm.src="//hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();(function(){var bp = document.createElement('script');var curProtocol = window.location.protocol.split(':')[0];if(curProtocol === 'https'){bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';}else{bp.src = 'http://push.zhanzhang.baidu.com/push.js';};var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(bp, s);})();</script>
    	
    
    <script>
    	function setCookie(name, value, iDay) { //name相当于键,value相当于值,iDay为要设置的过期时间(天)
    		var oDate = new Date();
    		oDate.setDate(oDate.getDate() + iDay);
    		document.cookie = name + '=' + value + ';path=/;domain=.php.cn;expires=' + oDate;
    	}
    
    	function getCookie(name) {
    		var cookieArr = document.cookie.split(";");
    		for (var i = 0; i < cookieArr.length; i++) {
    			var cookiePair = cookieArr[i].split("=");
    			if (name == cookiePair[0].trim()) {
    				return decodeURIComponent(cookiePair[1]);
    			}
    		}
    		return null;
    	}
    </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', '7']);
    		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 -->
    
    <script>
    	setCookie('is_article', 1, 1);
    </script>
    
    <script>
    	var is_login = "0";
            var show = 0;
            var ceng = getCookie('ceng');
            //未登录复制显示登录按钮
            if(is_login == 0 && false){
                $(".code").hover(function(){
                    $(this).find('.contentsignin').show();
                },function(){
                    $(this).find('.contentsignin').hide();
                });
                //不给复制
                $('.code').bind("cut copy paste",function(e) {
                    e.preventDefault();
                });
                $('.code .contentsignin').click(function(){
                    $(document).trigger("api.loginpopbox");
                })
            }else{
                // 获取所有的 <pre> 元素
                var preElements = document.querySelectorAll('pre');
                preElements.forEach(function(preElement) {
                    // 创建复制按钮
                    var copyButton = document.createElement('button');
                    copyButton.className = 'copy-button';
                    copyButton.textContent = '复制';
                    // 添加点击事件处理程序
                    copyButton.addEventListener('click', function() {
                        // 获取当前按钮所属的 <pre> 元素中的文本内容
                        var textContent = preElement.textContent.trim();
                        // 创建一个临时 textarea 元素并设置其值为 <pre> 中的文本内容
                        var tempTextarea = document.createElement('textarea');
                        tempTextarea.value = textContent;
                        // 将临时 textarea 添加到文档中
                        document.body.appendChild(tempTextarea);
                        // 选中临时 textarea 中的文本内容并执行复制操作
                        tempTextarea.select();
                        document.execCommand('copy');
                        // 移除临时 textarea 元素
                        document.body.removeChild(tempTextarea);
                        // 更新按钮文本为 "已复制"
                        this.textContent = '已复制';
                    });
    
                    // 创建AI写代码按钮
                    var aiButton = document.createElement('button');
                    aiButton.className = 'copy-button';
                    aiButton.textContent = 'AI写代码';
                    aiButton.style.marginLeft = '5px';
                    aiButton.style.marginRight = '5px';
                    // 添加点击事件处理程序
                    aiButton.addEventListener('click', function() {
                    // Generate a random number between 0 and 1
                            var randomChance = Math.random();
    
                        // If the random number is less than 0.5, open the first URL, else open the second
                        if (randomChance < 0.5) {
                            window.open('https://www.doubao.com/chat/coding?channel=php&source=hw_db_php', '_blank');
                        } else {
                            window.open('https://click.aliyun.com/m/1000402709/', '_blank');
                        }
                    });
    
                    // 将按钮添加到 <pre> 元素前面
                    preElement.parentNode.insertBefore(copyButton, preElement);
                    preElement.parentNode.insertBefore(aiButton, preElement);
            });
            }
    </script>