【发布时间】:2012-05-13 18:22:01
【问题描述】:
$fileSyntax = strtolower(preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($fileSyntax, ENT_QUOTES, 'UTF-8'))); // remove foreign character accents
$fileSyntax = preg_replace("/[^a-zA-Z0-9\s]/", "", $fileSyntax); // remove anything that's not alphanumeric, or a space
$fileSyntax = preg_replace("/\s+/", "-", $fileSyntax); // replace space with hyphen
$fileSyntax = trim($fileSyntax, "-"); // removes prefixing and trailing hyphen
上面的代码将产生以下内容:
Pokémon = pokemon
YO MAN! = yo-man
为了提高效率,我想重写它,然后很快将其转换为函数。
我怎样才能使用多个preg_replace(),这样就不会是多行代码了?
【问题讨论】:
-
4行代码有什么问题?亲爱的开发人员,1 个巨大的行,以及 1 个巨大的 sql 查询不是灵丹妙药。您为开发人员编写代码以便他们可以轻松阅读,因此更喜欢可读性而不是……其他一切
-
理想情况下我想把它变成一个函数,我想知道我目前解析字符串的方法有多糟糕。
-
“我想知道我目前的方法有多糟糕” - 它是否按预期工作?如果是 - 那么一切都很好。
-
@Aaron - 为什么?我们长大并生活在一个拥有多种语言的社会中?有什么危害?
-
@EdHeal - 我写这个是为了生成有效的 URL,类似于 stackoverflow (
php-replace-foreign-characters-in-a-string) 上使用的格式。