/
Alnum.php
56 lines (46 loc) · 1.16 KB
/
Alnum.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
namespace DMS\Filter\Rules;
/**
* Alnum Rule (Alpanumeric)
*
* @package DMS
* @subpackage Filter
*
* @Annotation
*/
class Alnum extends Rule
{
protected static $unicodeEnabled;
public $allowWhitespace = true;
/**
* {@inheritDoc}
*/
public function applyFilter($value)
{
//Check for Whitespace support
$whitespaceChar = ($this->allowWhitespace)? " ":"";
//Build pattern
$pattern = ($this->checkUnicodeSupport())?
'/[^\p{L}\p{N}' . $whitespaceChar . ']/u' :
'/[^a-zA-Z0-9' . $whitespaceChar . ']/' ;
return preg_replace($pattern, '', $value);
}
/**
* Verifies that Regular Expression functions support unicode
* @return boolean
*/
public function checkUnicodeSupport()
{
if (null === self::$unicodeEnabled) {
self::$unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false;
}
return self::$unicodeEnabled;
}
/**
* {@inheritDoc}
*/
public function getDefaultOption()
{
return 'allowWhitespace';
}
}