<?php
$text = 'Të$ting slugificatiön';
// construct the pipeline
$valuePlaceholder = new stdClass;
array('preg_replace', array('~[^\\pL\d]+~u', '-', $valuePlaceholder)), array('iconv', array('utf-8', 'us-ascii//TRANSLIT', $valuePlaceholder)), // etc etc
);
// process it
$value = $text;
foreach ($pipeline as $stage) {
list($callable, $parameters) = $stage; foreach ($parameters as &$parameter) {
if ($parameter === $valuePlaceholder) {
$parameter = $value;
}
}
}
// final result
echo $value;
?>
PD9waHAKCiR0ZXh0ID0gJ1TDqyR0aW5nIHNsdWdpZmljYXRpw7ZuJzsKICAgIAovLyBjb25zdHJ1Y3QgdGhlIHBpcGVsaW5lCiR2YWx1ZVBsYWNlaG9sZGVyID0gbmV3IHN0ZENsYXNzOwokcGlwZWxpbmUgPSBhcnJheSgKICAgIGFycmF5KCdwcmVnX3JlcGxhY2UnLCBhcnJheSgnflteXFxwTFxkXSt+dScsICctJywgJHZhbHVlUGxhY2Vob2xkZXIpKSwKICAgIGFycmF5KCd0cmltJywgYXJyYXkoJHZhbHVlUGxhY2Vob2xkZXIsICctJykpLAogICAgYXJyYXkoJ2ljb252JywgYXJyYXkoJ3V0Zi04JywgJ3VzLWFzY2lpLy9UUkFOU0xJVCcsICR2YWx1ZVBsYWNlaG9sZGVyKSksCiAgICAvLyBldGMgZXRjCik7CgovLyBwcm9jZXNzIGl0CiR2YWx1ZSA9ICR0ZXh0Owpmb3JlYWNoICgkcGlwZWxpbmUgYXMgJHN0YWdlKSB7CiAgICBsaXN0KCRjYWxsYWJsZSwgJHBhcmFtZXRlcnMpID0gJHN0YWdlOwogICAgZm9yZWFjaCAoJHBhcmFtZXRlcnMgYXMgJiRwYXJhbWV0ZXIpIHsKICAgICAgICBpZiAoJHBhcmFtZXRlciA9PT0gJHZhbHVlUGxhY2Vob2xkZXIpIHsKICAgICAgICAgICAgJHBhcmFtZXRlciA9ICR2YWx1ZTsKICAgICAgICB9CiAgICB9CiAgICAkdmFsdWUgPSBjYWxsX3VzZXJfZnVuY19hcnJheSgkY2FsbGFibGUsICRwYXJhbWV0ZXJzKTsKfQoKLy8gZmluYWwgcmVzdWx0CmVjaG8gJHZhbHVlOwoKPz4=