Php 如何匹配Yii中的字符串?

Php 如何匹配Yii中的字符串?,php,yii,match,substr,Php,Yii,Match,Substr,我被困在这件事上了。。比方说,我有string1和string2(在同一个模型中),其中string1有7个数字,string2有2个数字。 然后我想将它们匹配在一起,其中string1的两个起始数字必须与string2相同。我在model>>中尝试了此代码 public function CekDigit($attribute,$params) { $attribute=substr($this->string1,0,-7); $params=$this->string2; i

我被困在这件事上了。。比方说,我有string1和string2(在同一个模型中),其中string1有7个数字,string2有2个数字。 然后我想将它们匹配在一起,其中string1的两个起始数字必须与string2相同。我在model>>中尝试了此代码

public function CekDigit($attribute,$params)
{

$attribute=substr($this->string1,0,-7);
$params=$this->string2;

if($this->$attribute==$params['subject'])
{
$this->addError(‘Error’, $params['message']);
return false;
}
}
在规则中,我将此代码放入>>

    <?php

array('string1','cekdigit','message'=>'the code is unmatched','subject'),

?>

在我编写代码之后,我尝试用23xxxxxxx填充$string1
但是我得到了一个错误,那就是CException:Property model.23没有定义。有人能帮我吗?非常感谢使用您的示例行
$attribute=substr($this->string1,0,-7)
将$attribute设置为23,因此行
if($this->$attribute==$params['subject'])
将对照
$this->23
检查
$params['subject']

试一试


你能在CekDigit()内打印$_POST并复制粘贴结果吗?我想你不知道那里发生了什么。。。请仔细阅读此内容-看起来您在某个阶段将调用
$$string1
作为
$$string1
。另外,看起来您正在将
$params
设置为一个字符串(
$params=$this->string2
),但随后尝试与数组值进行比较(
$params['subject']
public function CekDigit($attribute, $params)
{ 
    $string1 = substr($this->$attribute, 0, 2); 
    if ($string1 == $this->string2)
        {
        $this->addError(‘Error’, $params['message']);
        return false;
    }
}