2010-02-07 78 views
1

我想一个HTML文档分成它的头和身体:为什么我使用Perl的分割函数不分割?

my @contentsArray = split(/<\/head>/is, $fileContents, 1); 
if(scalar @contentsArray == 2){ 
    $bodyContents = $dbh->quote(trim($contentsArray[1])); 
    $headContents = $dbh->quote(trim($contentsArray[0]) . "</head>"); 
} 

是我。 $fileContents包含HTML代码。当我运行它时,它不会分裂。任何人知道为什么?

+4

只用一个文本字符串来解析一个HTML文档是一个坏主意,除了最人造的环境之外的任何东西。你真的应该考虑使用像HTML :: Parser这样的模块。 – gary 2010-02-07 09:49:29

+0

投票结束为“不再相关”。见http://stackoverflow.com/questions/2216274/why-does-my-use-of-perls-split-function-not-split/2216304#2216304 – 2010-02-07 13:19:41

+0

@SinanÜnür:这仍然是一个很好的问题,这似乎是我比大多数人更可能帮助一些后来的搜索者。 – ysth 2010-02-07 17:46:14

回答

1

对不起,算了一下。认为1是多少次它会发现表达式不会限制结果。更改为2并正常工作。

+0

不要发布非答案。请更新您的问题或改用评论。 – 2010-02-07 13:17:56

+1

@SinanÜnür:看起来像是对我的回答。我只打算发表一个单独的答案,因为“限制结果”可能被错误地解释。 – ysth 2010-02-07 17:48:35

6

的第三个参数拆分是多少结果产生,所以如果你想一次申请的表达,你会通过2.

请注意,这样做实际上是限制使用的模式的次数到分割字符串(一个比传递的数量少),而不是仅仅限制结果的数量返回的,所以这样的:

print join ":", split /,/, "a,b,c", 2; 

输出:

a:b,c 

不是:

a:b