我试图通过几个函数运行一个变量以获得期望的结果。
例如,对文本进行 slugify 的函数是这样工作的:
// replace non letter or digits by -
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
// trim
$text = trim($text, '-');
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// lowercase
$text = strtolower($text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
但是,我们可以看到这个例子中有一个模式。该$text
变量通过 5 个函数调用传递,如下所示preg_replace(..., $text) -> trim($text, ...) -> iconv(..., $text) -> strtolower($text) -> preg_replace(..., $text)
:
有没有更好的方法可以编写代码以允许变量筛选多个函数?
一种方法是像这样编写上面的代码:
$text = preg_replace('~[^-\w]+~', '', strtolower(iconv('utf-8', 'us-ascii//TRANSLIT', trim(preg_replace('~[^\\pL\d]+~u', '-', $text), '-'))));
...但这种写作方式是一个笑话和嘲弄。它阻碍了代码的可读性。