Naming is a library that has filter and validator for people name with multibyte string check support, extends the Laminas
filter and validator, while it can be used as standalone.
composer require samsonasik/naming
- Strip Tags
- String Trim
- String To Upper first letter in each word with set lower case after that
- Replace double space to single space
- String To Upper after
'
and-
character if any
Examples:
Original name | Filtered name |
---|---|
<script>Abdul | Abdul |
ABduL | Abdul |
aBDUL m. ikHsan | Abdul M. Ikhsan |
abdul Malik I | Abdul Malik I |
D'lilah | D'Lilah |
Veli-matti | Veli-Matti |
äX | Äx |
- Allowed characters: letters, hyphens, apostrophe, spaces, full stops.
- Not allowed:
- include number
- special characters
- single
.
character - single
-
character - single
'
character - consecutive
.
characters - consecutive
-
characters - consecutive
'
characters - full stops not in the last of each word
Usage with laminas-form instance:
use Naming\Filter;
use Naming\Validator;
use Laminas\Form\Element\Text;
use Laminas\Form\Form;
use Laminas\InputFilter\InputFilterProviderInterface;
class ContactForm extends Form implements InputFilterProviderInterface
{
public function init()
{
$this->add([
'type' => Text::class,
'name' => 'fullname',
'options' => [
'label' => 'Full name',
],
]);
}
public function getInputFilterSpecification()
{
return [
[
'name' => 'fullname',
'required' => true,
'filters' => [
[
'name' => Filter\Naming::class
],
],
'validators' => [
[
'name' => Validator\Naming::class,
],
],
],
];
}
}
Using standalone:
use Naming\Filter;
use Naming\Validator;
include 'vendor/autoload.php';
// ... VALID
$filtered = (new Filter\Naming())->filter('Abdul malik ikhsan');
$validator = new Validator\Naming();
echo $filtered; // Abdul Malik Ikhsan
var_dump($validator->isValid($filtered)); // true
// ... INVALID
$filtered = (new Filter\Naming())->filter('Abdul....');
$validator = new Validator\Naming();
echo $filtered; // Abdul....
var_dump($validator->isValid($filtered)); // false
var_dump(\current($validator->getMessages())); /* "Consecutive "."s are not allowed" */
Contributions are very welcome. Please read CONTRIBUTING.md