For App Connect you can create a custom formatter, I think speakingurl (https://github.com/pid/speakingurl) is a very good library.
Add the script include to your page
<script src="https://cdnjs.cloudflare.com/ajax/libs/speakingurl/14.0.1/speakingurl.min.js"></script>
The add a custom script block or put it in a file
dmx.Formatter('string', 'getSlug', function(val) {
return getSlug(val, { lang: 'de' });
});
The in the expression use it like {{ 'Äpfel & Birnen!'.getSlug() }}
.
Same could be done for server-side, problem is that there is no universal library. So if you find a library for PHP it is possible that it doesn’t generate the same url as the javascript version.
See How can I merge 2 or more json results on how to create custom formatter in PHP.