我有一个PHPExcel的包装器,我有一个名为setColumn()
的方法,如下所示:
public function setColumn($cell = ""){
if(empty($cell)){
$cell = $this->cell;
}
$this->column = strtoupper(preg_replace("/[^A-Za-z]/", "", $cell));
$this->cell = "{$this->column}{$this->row}";
return $this;
}
它工作得很好,但是当我使用它时,我可以传入A1:D1
等范围,当我这样做时,我的preg_replace将无法正确替换,它将返回AD
我不知道我想要。我希望它返回A
。我不确定完成此任务所需的正则表达式。
参数$cell
可以包含几个不同的值:
A1
应该返回A
A1:D10
应该返回A
AD10
应该返回AD
AD1:BBB1
应该返回AD
列表可以继续,但这是基础知识。那么我该怎么做呢?
答案 0 :(得分:3)
匹配数字而不是可选冒号,然后匹配
之后的所有内容preg_replace("/\d:?.*/", "", $cell);
或者就像linepogl指出的那样
preg_replace("/\d.*/", "", $cell);
只要图案保留:字母数字everythingelse
答案 1 :(得分:2)
答案 2 :(得分:0)
我能够提出另一种解决方案,(几乎在我提交问题后立即)。我所做的是在:
上爆炸并使用了数组中的第一项,如下所示:
public function setColumn($cell = ""){
if(empty($cell)){
$cell = $this->cell;
}
$rng = explode(":", $cell);
$this->column = strtoupper(preg_replace("/[^A-Za-z]/", "", $rng[0]));
$this->cell = "{$this->column}{$this->row}";
return $this;
}
答案 3 :(得分:0)