有没有更好的方法在PHP中删除/形成此字符串?

时间:2012-09-12 20:37:07

标签: php regex

我目前正在使用看似非常复杂且不必要的解决方案来形成必需的字符串。

该字符串可以包含任何标点符号,并包含斜杠。

例如,这个字符串:

Test Ripple, it\'s a comic book one!

使用我当前的方法:

str_replace(" ", "-", trim(preg_replace('/[^a-z0-9]+/i', ' ', str_replace("'", "", stripslashes($string)))))

返回正确的结果:

Test-Ripple-its-a-comic-book-one

以下是我当前(不良)解决方案为实现所需输出所做的工作的细分: -

  1. 从字符串中删除所有斜杠
  2. 使用str_replace
  3. 删除任何撇号
  4. 使用preg_replace删除任何剩余的标点符号并将其替换为空格
  5. 从字符串的开头/结尾剪掉任何可能是由标点符号引起的额外空格。
  6. 用' - '
  7. 替换所有空格

    但必须有更好,更有效的方式。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

就个人而言,我看起来不错,但我会做一个小改动。

更改

preg_replace("/[^a-z0-9]+/i"

以下

preg_replace("/[^a-zA-Z0-9\s]/"