How can I format a string in Twig as follows:
For example: img = 05myphoto-Car.jpg
I need to remove the numeric prefix and -
I am mainly using this to output captions for images based on their filename
Desired Output:
Myphoto Car
I have tried this so far, from the docs:
{{ img |replace({'.jpg': "", '-' : " "}) }}
Outputs String
05myphoto Car
I also tried {{ replace({'range(0, 9)': ""}) }} // for numeric prefix - did not work
Better late than never...
Just register it (for me was on index.php
)
$app['twig']->addFilter('preg_replace', new Twig_Filter_Function(function ($subject, $pattern, $replacement) {
return preg_replace($pattern, $replacement, $subject);
}));
Then on the view: {{myVar|preg_replace('/\\d+/','')}}
Notice that all backslashes MUST be escaped, if not, they will be removed by Twig...
This works for me just fine (Craft CMS):
{# Removes all characters other than numbers and + #}
{{ profile.phone|replace('/[^0-9+]/', '') }}
If you are willing to do it in the template, though it would be better as a controller/service, you can enable the preg_replace
filter and strip numbers with something like preg_replace('/\d+/','')
and use the capitalize filter in addition.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With