我想使用PHP Weather 2.2.2项目,但它有很多问题 这是一个代码
function get_languages($type) {
static $output = array();
if (empty($output)) {
/* I use dirname(__FILE__) here instead of PHPWEATHER_BASE_DIR
* because one might use this function without having included
* phpweather.php first. */
require(dirname(__FILE__) . '/languages.php');
$dir = opendir(dirname(__FILE__) . '/output');
while($file = readdir($dir)) {
// I got a problem in this line below
if (ereg("^pw_${type}_([a-z][a-z])(_[A-Z][A-Z])?\.php$", $file, $regs)) {
// After i change it to the line mentioned below i got error undefined offset:2 in line 2 mentioned below
// how to correct this error or is there any way to correct this code
if(preg_match("#^pw_${type}_([a-z][a-z])(_[A-Z][A-Z])?\.php$#", $file, $regs)) {
$output[$regs[1] . $regs[2]] = $languages[$regs[1] . $regs[2]];
}
}
closedir($dir);
}
asort($output);
return $output;
}
答案 0 :(得分:0)
您会看到此通知,因为未设置$regs[2]
。
if(preg_match("#^pw_${type}_([a-z][a-z])(_[A-Z][A-Z])?\.php$#", $file, $regs)) {
$output[$regs[1] . (isset($regs[2]) ? $regs[2] : '')] = $languages[$regs[1] . (isset($regs[2]) ? $regs[2] : '')];
}
使用isset()
进行检查是否存在数组值或否。如果不存在与空字符串''
这是因为您在正则表达式中使用了? (_[A-Z][A-Z])?
答案 1 :(得分:0)
使用此正则表达式:
if(preg_match("#^pw_${type}_([a-z][a-z])((?:_[A-Z][A-Z])?)\.php$#", $file, $regs)) {
?:
组不会成为捕获组,只是为了允许您对其应用?
修饰符而存在。将其包装在另一组中可以捕获其中的内容;如果可选的正则表达式不匹配,则为空字符串。