搜尋
首頁後端開發php教程Php中正则小结(一)_PHP教程

Php中正则小结(一)_PHP教程

Jul 20, 2016 am 11:13 AM
php分隔符可以字母數位斜槓概念模式正規則文法

一.概念

语法模式类似.

分隔符可以是任意非字母非数字,除反斜杠

 

 

如果分隔符 在表达式中使用,需要使用反斜线进行转义

 

元字符

一个正则表达式基本组成

 

/原子和元字符/模式修正符              /代表定界符的一个

正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。

根据在方括号的内部还是外部分为两种。

 1.方括号之外的元字符

元字符(符号)

说明

\

一般用于转义字符

^

断言目标的开始位置(或在多行模式下是行首)

$

目标的结束位置(活在多行模式下行尾)

.

匹配除换行符外任何字符(默认时)

[,]

开始,结束字符类定义

|

开始一个可选分支

( ,)

子组的开始,结尾标记

?

作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性

*

量词,0 次或多次匹配

 

+

量词,1 次或多次匹配

 

{ ,}

自定义量词开始标记,结束标记

 

 

2.模式中方括号内的部分称为“字符类”

元字符

说明

\

转义字符

^

仅在作为第一个字符时,表明字符类取反

-

标记字符范围

元字符用法说明举例

1.转义(反斜线)

\后紧跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义。此种适用于字符类之中或之外。

对于非数字字母的字符,总是需要其进行原文匹配时候在它前面加一个反斜线,来代表它代表自己。

 

匹配 “*” 时,由于其有特殊含义,所以用 “\*”取消掉了其特殊含义

匹配”.”用”\.”

匹配”\” 用”\\”

但要注意:

反斜线在单引号字符串和双引号字符串中都有特殊含义,因此要匹配一个反斜线,模式中必须写”\\\\”或’\\\’

 

2.反斜线第二种用途提供了一种对非打印字符进行可见编码的控制手段。除了二进制的

 

符号

说明

\a

 

响铃字符(十六进制 07)

 

\cx

"control-x",x 是任意字符

 

\e

转义 (十六进制 1B)

 

\f

换页 (十六进制 0C)

 

\n

换行 (十六进制 0A)

 

\p{xx} (p

一个符合 xx 属性的字符

\P{xx} (p

一个不符合 xx 属性的字符

\r

回车 (十六进制 0D)

 

\t

水平制表符 (十六进制 09)

 

\xhh

  hh十六进制编码的字符

\ddd

ddd八进制编码的字符,或者后向引用

 

\040

空格的另外一种用法

 

\40

当提供了少于40个子组时也认为是空格。 

 

\7

始终是后向引用

 

\11

可能是后向引用,也可能是制表符

\011

总是一个制表符

 

\0113

一个制表符紧跟着一个3(因为每次最多只读取3个8进制位

 

\113

八进制113代表的字符 

 

\377

8进制377是10进制255, 因此代表一个全1的字符

 

\81

一个后向引用或者一个二进制 0 紧跟着两个数字 8 和 1(因为8不是8进制有效数字) 

 

3.反斜线第三种用法,描述特定的字符类

符号

说明

\d

任意十进制数字

\D

任意非十进制数字

\h

任意水平空白字符

\H

任意非水平空白字符

\s

任意空白字符

\S

任意空白字符

\v

任意垂直空白字符(since PHP 5.2.4)

 

\V

任意非垂直空白字符(since PHP 5.2.4)

 

\w

任意单词字符

 

\W

任意非单词字符

 

上面每一对转义序列都代表了完整字符集中两个不相交的部分, 任意字符一定会匹配其中一个,同时一定不会匹配另外一个。

 

第四种用法 简单的断言

\b

单词边界 注意在字符类中是退格

 

\B

非单词边界

 

\A

目标的开始位置(独立于多行模式)

 

\Z

目标的结束位置或结束处的换行符(独立于多行模式) 

 

\z

目标的结束位置(独立于多行模式)

 

\G

在目标中首次匹配位置

 

\A,\Z,\z

 

因为他们永远匹配目标字符串的开始和结尾,而不会受模式修饰符的限制

 

\Z和 \z之间的不同在于当字符串结束字符时换行符时 \Z 会将其看做字符串结尾匹配, 而 \z 只匹配字符串结尾。

 

代码1

<span $p</span>='#\A[a-z]{3}#m'<span ;
</span><span $str</span>='<span abc
defg
hijkl</span>'<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $all</span><span );
</span><span print_r</span>(<span $all</span>);

发现后面加不加模式修正符m

只匹配到

而代码

 

<span $p</span>='#^[a-z]{3}#m'<span ;
</span><span $str</span>='<span abc
defg
hijkl</span>'<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $all</span><span );
</span><span print_r</span>(<span $all</span>);

 

不加m

加上之后匹配了

果真,

同理可比较

 

代码

 

<span <span $p</span>='#[a-z]\Z#'<span ;


</span><span $str</span>="a\n"<span ;


</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $all</span><span );


</span><span print_r</span>(<span $all</span>);</span>

模式修正为\E

当模式修正为

 

 

在指定了$offset 参数的 preg_match()() 调用中, 仅在当前匹配位置在匹配开始点的时候才是成功的

 

 当 $offset 的值不为 0 的时候, 它与 \A 是不同的。

 

参见php手册

 

 

即把有特殊含义的字符放在\Q与\E之间

 

如代码4

<span $p</span>='#\w+\Q.$.\E$#'<span ;
</span><span $str</span>="a.$."<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $all</span><span );
</span><span print_r</span>(<span $all</span>);

匹配到 a.$.

 

自 PHP 5.2.4 开始。。 比如, foot\Kbar 匹配”footbar”。 但是得到的匹配结果是 ”bar”。但是, \K 的使用不会干预到子组内的内容, 比如 (foot)\Kbar 匹配 ”footbar”,第一个子组内的结果仍然会是 ”foo”。译注: \K 放在子组和子组外面的效果是一样的。

\p{Lu}匹配大写字母

句点

在字符类外部

\C可以被用于匹配单字节, 也就是说在UTF-8模式下,句点可以匹配多字节字符

Character classes

alnum

字母和数字

alpha

字母

ascii

0 - 127的ascii字符

blank

空格和水平制表符

cntrl

控制字符

digit

十进制数(same as \d)

graph

打印字符, 不包括空格

lower

小写字母

print

打印字符,包含空格

punct

打印字符, 不包括字母和数字

space

空白字符 (比\s多垂直制表符)

upper

大写字母

word

单词字符(same as \w)

xdigit

十六进制数字

 

 

 

 

比如'#[[:upper:]]#'匹配大写字母

'#[[:alpha:]]#'   匹配字母

 

 

竖线字符用于分离模式中的可选路径。 比如模式gilbert|Sullivan匹配 ”gilbert” 或者 ”sullivan”。 竖线可以在模式中出现任意多个,并且允许有空的可选路径(匹配空字符串)。 匹配的处理从左到右尝试每一个可选路径,并且使用第一个成功匹配的。 如果可选路径在子组(下面定义)中, 则”成功匹配”表示同时匹配了子模式中的分支以及主模式中的其他部分。

代码5

<span $p</span>='#p(hp|ython|erl)#'<span ;
</span><span $str</span>="php python perl"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $all</span><span );
</span><span print_r</span>(<span $all</span>);

子组通过圆括号分割界定,并且它们可以嵌套,主要有以下两种用法与功能

1.将可选分支局部化。比如

模式 p(hp|ython|erl) 匹配

2.将子组设定为捕获子组

整个模式匹配后, 左括号从左至右出现的次序就是对应子组的下标(从 1 开始), 可以通过这些下标数字来获取捕获子模式匹配结果。

代码6

<span $p</span>='#(\d)#'<span ;
</span><span $str</span>="abc123"<span ;
</span><span $r</span>=<span preg_replace</span>(<span $p</span>,'<font color=red>\1</font>',<span $str</span><span );
</span><span echo</span> <span $r</span>;

在子组定义的左括号后面紧跟字符串 ”?:” 会使得该子组不被单独捕获, 并且不会对其后子组序号的计算产生影响

 代码7:匹配数字 把数字改为红色的

<span $p</span>='#.*(?:\d).*([a-z])#U'<span ;
</span><span $str</span>="3df5g"<span ;
</span><span $r</span>=<span preg_replace</span>(<span $p</span>,'<font color=red>\1</font>',<span $str</span><span );
</span><span echo</span> <span $r</span>;

如果匹配数字的模式不加?:

那么

为了方便简写,如果需要在非捕获子组开始位置设置选项, ,比如:

上面两种写法实际上是相同的模式。因为可选分支会从左到右尝试每个分支, 并且选项没有在子模式结束前被重置, 并且由于选项的设置会穿透对后面的其他分支产生影响,因此, 上面的模式都会匹配 ”SUNDAY” 以及 ”Saturday”。

 在 PHP 4.3.3 中,pattern) 的语法进行命名。 这个子模式将会在匹配结果中同时以其名称和顺序(数字下标)出现, PHP 5.2.2中又增加了两种味子组命名的语法: (?pattern) 和 (?’name’pattern)。

代码如下8:

<span $p</span>="#.*(?<alpha>[a-z]{3})(?'digit'\d{3}).*#"<span ;
</span><span $str</span>="abc123111def111g"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果:

有时需要多个匹配可以在一个正则表达式中选用子组。 为了让多个子组可以共用一个后向引用数字的问题, (?\语法允许复制数字。 考虑下面的正则表达式匹配Sunday:

(?:(Sat)ur|(Sun))day

这里当后向引用 1 空时Sun 存储在后向引用 2 中. 当后向引用 2 不存在的时候 Sat 存储在后向引用 1中。 使用 (?|修改模式来修复这个问题:

代码9:

<span $p</span>='#(?:(sat)ur|(sun))day#'<span ;
</span><span $str</span>="sunday saturday"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果:

(?|(Sat)ur|(Sun))day

使用这个模式, Sun和Sat都会被存储到后向引用1中。

在看这个模式前先看以2个下代码

代码10-1

$p=<span '</span><span #(a|b)\d#</span><span '</span><span ;
$str</span>=<span "</span><span b2a1</span><span "</span><span ;
preg_match_all($p,$str,$arr);
print_r($arr);</span>

结果是:Array

<em id="__mceDel">(
    [0] => Array
        (
            [0] => b2
            [1] => a1
        )

    [1] => Array
        (
            [0] => b
            [1] => a
        )

)<br /><span <strong>代码10-2</strong></span><br /></em>
$p=<span '</span><span #((a)|b)\d#</span><span '</span><span ;
$str</span>=<span "</span><span b2a1</span><span "</span><span ;
preg_match_all($p,$str,$arr);
print_r($arr);</span>

结果:

<strong>Array
(
    [0] => Array
        (
            [0] => b2
            [1] => a1
        )

    [1] => Array
        (
            [0] => b
            [1] => a
        )

    [2] => Array
        (
            [0] => 
            [1] => a
        )</strong>

)<br /><strong>对10-2代码:<br /></strong>第一次完整匹配到的内容是b2,所以包括匹配内容b的括号即为其第一个子模式是即为b,第二个子模式由于(a)没有匹配,所以为空<br />第二次完整匹配到a1,其第一个子模式为a,第二次的由于((a)|b)是外层大括号里包含的<br /><strong>代码10-3:<br /></strong>
$p=<span '</span><span #((a)|(b))\d#</span><span '</span><span ;
$str</span>=<span "</span><span b2a1</span><span "</span><span ;
preg_match_all($p,$str,$arr);
print_r($arr);</span>

 

<strong> 结果:<br /></strong>
Array
(
    [0] => Array
        (
            [0] => b2
            [1] => a1
        )

    [1] => Array
        (
            [0] => b
            [1] => a
        )

    [2] => Array
        (
            [0] => 
            [1] => a
        )

    [3] => Array
        (
            [0] => b
            [1] => 
        )

)

 代码10-4:

$p=<span '</span><span #(?:(a)|(b))\d#</span><span '</span><span ;
$str</span>=<span "</span><span b2a1</span><span "</span><span ;
preg_match_all($p,$str,$arr);
print_r($arr);</span>
结果:<br />Array
(
    [0] => Array
        (
            [0] => b2
            [1] => a1
        )

    [1] => Array
        (
            [0] => 
            [1] => a
        )

    [2] => Array
        (
            [0] => b
            [1] => 
        )

)

 

<strong> </strong>

代码10:

<span $p</span>='#(?|(sat)ur|(sun))day#'<span ;
</span><span $str</span>="sunday saturday"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果

 

如果紧跟反斜线的数字小于 10, 它总是一个后向引用。模式中的捕获数要大于等于后向引用的个数

 

后向引用会直接匹配被引用捕获组在目标字符串中实际捕获到的内容, 而不是匹配子组模式的内容

 

(sens|respons)e and \1ibility将会匹配 

 

<span $p</span>='#(sens|respons)e and \1ibility#'<span ;
</span><span $str</span>="sense and sensibility response and responsibility  sense and responsibility"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

 

结果

ab(?i)c匹配abC

 

如果在后向引用时被强制进行了大小写敏感匹配

((?i)abc)\s+\1

匹配 

ABC ABC

AbC AbC

只要两个一样不分大小写

但不匹配 

这里其实要考虑的是后向引用期望得到的内容是和那个被引用的捕获子组得到的内容是完全一致的

代码12:

<span $p</span>='#((?i)abc)\s+\1#'<span ;
</span><span $str</span>="abc abc |ABC ABC  |AbC AbC |abc Abc "<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果

先看以下代码13

<span $p</span>='#(a|(bc))#'<span ;
</span><span $str</span>="abc "<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

完整匹配了2次

[0][0]是第一次完整的匹配

[1][0]是第一次匹配的第一个子模式

[2][0]是第一次匹配的第二个子模式

[0][1]第二次完整匹配

[1][1]第二次匹配的第一个子模式

[2][1]是第二次匹配的第二个子模式

从上面可以发现对于模式

(a|(bc))

最外面的括号是第一个匹配子模式

里面的括号里的是第二个子模式

所以对于以下代码14:

<span $p</span>='#(a|(bc))\2#'<span ;
</span><span $str</span>="aabcbc"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果

当第一匹配

就无从

所以第一次完整匹配中必须得有让第二个子模式存在的机会即里面的括号里的内容必须被匹配到,所以必须得有

因为可能会有多达 99 个后向引用, 所有紧跟反斜线后的数字都可能是一个潜在的后向引用计数。 如果模式在后向引用之后紧接着还是一个数值字符, 那么必须使用一些分隔符用于终结后向引用语法。

以下代码15为例:

<span $p</span>='#([a-z]{3})\1 5#x'<span ;
</span><span $str</span>="aaaaaa5"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

模式后向引用\1

我们空下一格,然后在模式修正里忽略模式里的空格就能成功匹配

 

 (a\1) 就不会得到任何匹配

而这种引用可以用于内部的子模式重复

(a|b\1)会匹配 ”a”但不会匹配b( 因为子组内部有一个可选路径,可选路径中有一条路能够完成匹配,在匹配完成后, 后向引用就能够引用到内容了)。

代码16:

<span $p</span>='#(a|b\1)+#'<span ;
</span><span $str</span>="abba"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果

在每次子模式的迭代过程中, 后向引用匹配上一次迭代时这个子组匹配到的字符串。为了做这种工作, 模式必须满足这样一个条件,模式在第一次迭代的时候, 必须能够保证不需要匹配后向引用。 这种条件可以像上面的例子用可选路径来实现,也可以通过使用最小值为 0 的量词修饰后向引用的方式来完成。

 

在 PHP 5.2.2之后, g转义序列可以用于子模式的绝对和相对引用。 这个转义序列必须紧跟一个无符号数字或一个负数, 可以选择性的使用括号对数字进行包裹。 序列\1, \g1,\g{1} 之间是同义词关系。 这种用法可以消除使用反斜线紧跟数值描述反向引用时候产生的歧义。 这种转义序列有利于区分后向引用和八进制数字字符, 也使得后向引用后面紧跟一个原文匹配数字变的更明了,比如 \g{2}1。

代码17:

<span $p</span>='#([a-z]{2})\g{1}5#'<span ;
</span><span $str</span>="abab5"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

可与代码15对比

 

\g 转义序列紧跟一个负数代表一个相对的后向引用。比如: (foo)(bar)\g{-1} 可以匹配字符串 ”foobarbar”(foo)(bar)\g{-2} 可以匹配 ”foobarfoo”。 这在长的模式中作为一个可选方案, 用来保持对之前一个特定子组的引用的子组序号的追踪。

代码18

<span $p</span>='#(foo)(bar)\g{-1}#'<span ;
</span><span $p1</span>='#(foo)(bar)\g{-2}#'<span ;
</span><span $str</span>="foobarbar"<span ;
</span><span $str1</span>="foobarfoo"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span preg_match_all</span>(<span $p1</span>,<span $str1</span>,<span $arr1</span><span );
</span><span print_r</span>(<span $arr</span><span );
</span><span print_r</span>(<span $arr1</span>);

结果:

后向引用也支持使用子组名称的语法方式描述, 比如 (?P=name) 或者 PHP 5.2.2 开始可以实用\k 或 \k’name’。 另外在 PHP 5.2.4 中加入了对\k{name} 和 \g{name} 的支持。

代码19:

<span $p</span>="#(?<span 'alpha'</span>[a-z]{2})(?<digt>[0-9]{3})\k<digt>(?<span P=alpha</span>)#"<span ;
</span><span $str</span>="aa123123aa"<span ;
</span><span preg_match_all</span>(<span $p</span>,<span $str</span>,<span $arr</span><span );
</span><span print_r</span>(<span $arr</span>);

结果:

可与代码8比较着看

注意标红的

Alpha

P

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440385.htmlTechArticle一.概念 语法模式类似 . 分隔符可以是 任意非字母非数字,除反斜杠 如果分隔符在表达式中使用,需要使用反斜线进行转义 。 元字符 一个...
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP的當前狀態:查看網絡開發趨勢PHP的當前狀態:查看網絡開發趨勢Apr 13, 2025 am 12:20 AM

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP與其他語言:比較PHP與其他語言:比較Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能PHP與Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP:網絡開發的關鍵語言PHP:網絡開發的關鍵語言Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP:許多網站的基礎PHP:許多網站的基礎Apr 13, 2025 am 12:07 AM

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。