29 lines
579 B
PHP
29 lines
579 B
PHP
<?php
|
|
|
|
namespace App\Twig\Extension;
|
|
|
|
use Twig\Extension\AbstractExtension;
|
|
use Twig\TwigFilter;
|
|
use Twig\TwigFunction;
|
|
|
|
class TypoExtension extends AbstractExtension
|
|
{
|
|
public function getFilters(): array
|
|
{
|
|
return [
|
|
new TwigFilter('nbsp', [$this, 'nbsp']),
|
|
];
|
|
}
|
|
|
|
public function nbsp(string $value)
|
|
{
|
|
return preg_replace_callback(
|
|
'/(.+)(\.+|,+|;+|:+|!+|\?+)/isU',
|
|
function($d) {
|
|
return sprintf('%s %s', trim($d[1]), $d[2]);
|
|
},
|
|
$value
|
|
);
|
|
}
|
|
}
|