字符串为空但仍长度大于0

时间:2015-02-28 17:38:39

标签: php regex string

我正在使用此正则表达式检查文件中的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,是什么此?

1 个答案:

答案 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