1<?php 2 3namespace dokuwiki\plugin\config\core\Setting; 4 5/** 6 * Class setting_regex 7 */ 8class SettingRegex extends SettingString 9{ 10 protected $delimiter = '/'; // regex delimiter to be used in testing input 11 protected $pregflags = 'ui'; // regex pattern modifiers to be used in testing input 12 13 /** @inheritdoc */ 14 public function update($input) 15 { 16 17 // let parent do basic checks, value, not changed, etc. 18 $local = $this->local; 19 if (!parent::update($input)) return false; 20 $this->local = $local; 21 22 // see if the regex compiles and runs (we don't check for effectiveness) 23 $regex = $this->delimiter . $input . $this->delimiter . $this->pregflags; 24 $lastError = error_get_last(); 25 @preg_match($regex, 'testdata'); 26 if (preg_last_error() != PREG_NO_ERROR || error_get_last() !== $lastError) { 27 $this->input = $input; 28 $this->error = true; 29 return false; 30 } 31 32 $this->local = $input; 33 return true; 34 } 35} 36