<?php namespace dokuwiki\plugin\config\core\Setting; /** * Class setting_regex */ class SettingRegex extends SettingString { protected $delimiter = '/'; // regex delimiter to be used in testing input protected $pregflags = 'ui'; // regex pattern modifiers to be used in testing input /** @inheritdoc */ public function update($input) { // let parent do basic checks, value, not changed, etc. $local = $this->local; if (!parent::update($input)) return false; $this->local = $local; // see if the regex compiles and runs (we don't check for effectiveness) $regex = $this->delimiter . $input . $this->delimiter . $this->pregflags; $lastError = error_get_last(); @preg_match($regex, 'testdata'); if (preg_last_error() != PREG_NO_ERROR || error_get_last() !== $lastError) { $this->input = $input; $this->error = true; return false; } $this->local = $input; return true; } }