【问题标题】:String is empty but still have length greater than 0字符串为空但长度仍大于 0
【发布时间】:2015-02-28 17:38:39
【问题描述】:

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

【问题讨论】:

  • 你能发布一些示例字符串吗?
  • 它们可能是空字符。
  • 实际上是我用输出缓冲区捕获的文件,我刚刚发布了它。
  • 我如何检查空字符?我尝试了 !preg_match 与 /\0+/ 并没有成功
  • 请发布您正在使用的 php 代码,而不仅仅是正则表达式。

标签: php regex string


【解决方案1】:

如果是正则表达式,您发布的输出结果看起来不正确
您正在使用。

如果您检查您的正则表达式(格式如下),您会注意到第一个 左尖括号后面的字符必须是字母,不能是任何字符
别的。所以没有办法得到一个空的结果。

一般来说,重新检查您的工作。

这是你的正则表达式:

 <
 (                             # (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  

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2018-07-22
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多