我正在使用此正则表达式检查文件中的html标记:
/<([a-zA-Z]+(-[a-zA-Z]+)?(.*)?)>/
文件是:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<div id="div">
<p class="class">Hello World</p>
</div>
</body>
</html>
结果如下:(这就是我需要的)
string(4) "html"
string(4) "head"
string(20) "meta charset="utf-8""
string(18) "title>Title"
string(4) "body"
string(12) "div id="div""
string(30) "p class="class">Hello World"
string(14) ""
string(7) ""
string(7) ""
有些“空”字符串内部没有内容,但 empty()返回false, strlen()不返回0,是什么此?
答案 0 :(得分:0)
如果是正则表达式,那么您发布的输出结果看起来不正确 您正在使用。
如果你检查你的正则表达式(格式如下),你会注意到第一个 超过开角支架的字符必须是alpha,它不能是任何东西 其他。所以没有办法得到一个空的结果。
一般来说,重新检查你的工作。
这是你的正则表达式:
<
( # (1 start)
[a-zA-Z]+
( - [a-zA-Z]+ )? # (2)
( .* )? # (3)
) # (1 end)
>
这是输出,基于您发布的输入。
** Grp 0 - ( pos 17 , len 6 )
<html>
** Grp 1 - ( pos 18 , len 4 )
html
** Grp 2 - NULL
** Grp 3 - ( pos 22 , len 0 ) EMPTY
-----------------
** Grp 0 - ( pos 25 , len 6 )
<head>
** Grp 1 - ( pos 26 , len 4 )
head
** Grp 2 - NULL
** Grp 3 - ( pos 30 , len 0 ) EMPTY
-----------------
** Grp 0 - ( pos 35 , len 22 )
<meta charset="utf-8">
** Grp 1 - ( pos 36 , len 20 )
meta charset="utf-8"
** Grp 2 - NULL
** Grp 3 - ( pos 40 , len 16 )
charset="utf-8"
-----------------
** Grp 0 - ( pos 61 , len 20 )
<title>Title</title>
** Grp 1 - ( pos 62 , len 18 )
title>Title</title
** Grp 2 - NULL
** Grp 3 - ( pos 67 , len 13 )
>Title</title
-----------------
** Grp 0 - ( pos 92 , len 6 )
<body>
** Grp 1 - ( pos 93 , len 4 )
body
** Grp 2 - NULL
** Grp 3 - ( pos 97 , len 0 ) EMPTY
-----------------
** Grp 0 - ( pos 100 , len 14 )
<div id="div">
** Grp 1 - ( pos 101 , len 12 )
div id="div"
** Grp 2 - NULL
** Grp 3 - ( pos 104 , len 9 )
id="div"
-----------------
** Grp 0 - ( pos 120 , len 32 )
<p class="class">Hello World</p>
** Grp 1 - ( pos 121 , len 30 )
p class="class">Hello World</p
** Grp 2 - NULL
** Grp 3 - ( pos 122 , len 29 )
class="class">Hello World</p