猿问

PHP函数preg_split()出错误?

使用PHP函数preg_split()时出现这样的错误:Warning: preg_split() [function.preg-split]: Empty regular expression in D:\PHPServer\WEB\01\jpgraph\jpgraph.php on line 5782

代码function GetTextHeight($txt="",$angle=0) {
$tmp =preg_split("\n",$txt);
$n = count($tmp);
$m=0;
for($i=0; $i< $n; ++$i)
$m = max($m,strlen($tmp[$i]));

if( $this->font_family <= FF_FONT2+1 ) {
if( $angle==0 ) {
$h = imagefontheight($this->font_family);
if( $h === false ) {
JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');
}

return $n*$h;
}
else {
$w = @imagefontwidth($this->font_family);
if( $w === false ) {
JpGraphError::RaiseL(25088);//('You have a misconfigured GD font support. The call to imagefontwidth() fails.');
}

return $m*$w;
}
}
else {
$bbox = $this->GetTTFBBox($txt,$angle);
return $bbox[1]-$bbox[5];
}
}

江户川乱折腾
浏览 812回答 3
3回答

当年话下

preg正则表达式必须有一个定界符,它可以是除元字符外的任何字符(位于表达式开始前和结束后,作用是把表达式与模式修饰符分开。比如 0abc0i 表示匹配不分大小写的abc)。你的正则式里只有一个\n,pcre认为它是你定义的定界符,于是“正则表达式不存在”就出现了。解决方法是在\n前后各加一个字符,比如 "/\n/"

蝴蝶不菲

PERL兼容正则可以使用任何不是字母、数字或反斜线(\)的字符作为定界符,如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。也可以使用(),{},[] 和 <> 作为定界符。使用preg_split中间的pattern需要使用定界符啊。

慕容森

缺少正则式。$tmp =preg_split("\n",$txt); =====> $tmp =preg_split("/\n/",$txt);
随时随地看视频慕课网APP
我要回答