Overview

Namespaces

  • None
  • Wei
    • Validator

Classes

  • Wei\Validator\All
  • Wei\Validator\AllOf
  • Wei\Validator\Alnum
  • Wei\Validator\Alpha
  • Wei\Validator\BaseValidator
  • Wei\Validator\Between
  • Wei\Validator\Blank
  • Wei\Validator\Callback
  • Wei\Validator\CharLength
  • Wei\Validator\Chinese
  • Wei\Validator\Color
  • Wei\Validator\Contains
  • Wei\Validator\CreditCard
  • Wei\Validator\Date
  • Wei\Validator\DateTime
  • Wei\Validator\Decimal
  • Wei\Validator\Digit
  • Wei\Validator\Dir
  • Wei\Validator\DivisibleBy
  • Wei\Validator\DoubleByte
  • Wei\Validator\Email
  • Wei\Validator\EndsWith
  • Wei\Validator\EqualTo
  • Wei\Validator\Exists
  • Wei\Validator\FieldExists
  • Wei\Validator\File
  • Wei\Validator\GreaterThan
  • Wei\Validator\GreaterThanOrEqual
  • Wei\Validator\IdCardCn
  • Wei\Validator\IdCardHk
  • Wei\Validator\IdCardMo
  • Wei\Validator\IdCardTw
  • Wei\Validator\IdenticalTo
  • Wei\Validator\Image
  • Wei\Validator\In
  • Wei\Validator\Ip
  • Wei\Validator\Length
  • Wei\Validator\LessThan
  • Wei\Validator\LessThanOrEqual
  • Wei\Validator\Lowercase
  • Wei\Validator\Luhn
  • Wei\Validator\MaxLength
  • Wei\Validator\MinLength
  • Wei\Validator\MobileCn
  • Wei\Validator\NaturalNumber
  • Wei\Validator\NoneOf
  • Wei\Validator\Null
  • Wei\Validator\Number
  • Wei\Validator\OneOf
  • Wei\Validator\Password
  • Wei\Validator\Phone
  • Wei\Validator\PhoneCn
  • Wei\Validator\PlateNumberCn
  • Wei\Validator\PositiveInteger
  • Wei\Validator\PostcodeCn
  • Wei\Validator\Present
  • Wei\Validator\QQ
  • Wei\Validator\RecordExists
  • Wei\Validator\Regex
  • Wei\Validator\Required
  • Wei\Validator\SomeOf
  • Wei\Validator\StartsWith
  • Wei\Validator\Time
  • Wei\Validator\Tld
  • Wei\Validator\Type
  • Wei\Validator\Uppercase
  • Wei\Validator\Url
  • Wei\Validator\Uuid
  • Overview
  • Namespace
  • Function
 1: <?php
 2: /**
 3:  * Wei Framework
 4:  *
 5:  * @copyright   Copyright (c) 2008-2015 Twin Huang
 6:  * @license     http://opensource.org/licenses/mit-license.php MIT License
 7:  */
 8: 
 9: namespace Wei\Validator;
10: 
11: /**
12:  * Check if the input is ends with specified string
13:  *
14:  * @author      Twin Huang <twinhuang@qq.com>
15:  */
16: class EndsWith extends BaseValidator
17: {
18:     protected $notFoundMessage = '%name% must end with "%findMe%"';
19: 
20:     protected $negativeMessage = '%name% must not end with "%findMe%"';
21: 
22:     protected $findMe;
23: 
24:     protected $case = false;
25: 
26:     /**
27:      * {@inheritdoc}
28:      */
29:     public function __invoke($input, $findMe = null, $case = null)
30:     {
31:         $findMe && $this->storeOption('findMe', $findMe);
32:         is_bool($case) && $this->storeOption('case', $case);
33: 
34:         return $this->isValid($input);
35:     }
36: 
37:     /**
38:      * {@inheritdoc}
39:      */
40:     protected function doValidate($input)
41:     {
42:         if (!$this->isString($input)) {
43:             $this->addError('notString');
44:             return false;
45:         }
46: 
47:         if (is_scalar($this->findMe)) {
48:             $pos = strlen($input) - strlen($this->findMe);
49:             $fn = $this->case ? 'strrpos' : 'strripos';
50:             if ($pos !== $fn($input, (string)$this->findMe)) {
51:                 $this->addError('notFound');
52:                 return false;
53:             }
54:         } elseif (is_array($this->findMe)) {
55:             $pattern = array();
56:             foreach ($this->findMe as $value) {
57:                 $pattern[] = preg_quote($value, '/');
58:             }
59:             $pattern = '/' . implode('|', $pattern) . '$/';
60:             $this->case || $pattern .= 'i';
61: 
62:             if (!preg_match($pattern, $input)) {
63:                 $this->addError('notFound');
64:                 return false;
65:             }
66:         }
67: 
68:         return true;
69:     }
70: }
71: 
Wei Framework API documentation generated by ApiGen