选择性字符串减少

发布于 2024-11-08 17:11:10 字数 41 浏览 3 评论 0原文

我想知道如何从字符串中去除除下划线和破折号之外的所有非字母数字字符。

I would like to know how to strip all non-alphanumeric characters from a string except for underscores and dashes in PHP.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

赤濁 2024-11-15 17:11:10

preg_replace/[^a-zA-Z0-9_\- ]/ 作为模式,'' 作为替换。

$string = preg_replace('/[^a-zA-Z0-9_\-]/', '', $string);

编辑

正如skipy所说,您可以使用i修饰符来不区分大小写:

$string = preg_replace('/[^a-z0-9_\-]/i', '', $string);

Use preg_replace with /[^a-zA-Z0-9_\-]/ as the pattern and '' as the replacement.

$string = preg_replace('/[^a-zA-Z0-9_\-]/', '', $string);

EDIT

As skippy said, you can use the i modifier for case insensitivity:

$string = preg_replace('/[^a-z0-9_\-]/i', '', $string);
姐不稀罕 2024-11-15 17:11:10

使用 preg_replace

$str = preg_replace('/[^\w-]/', '', $str);

preg_replace 的第一个参数是常规的表达。其中包含:

  • / - 起始分隔符 - 开始正则表达式
  • [ - 起始字符类 - 定义可以匹配的字符
  • ^ - 负数-- 使字符类仅匹配与 \w 后面的选择不匹配的字符
  • - 单词字符 -- 因此不匹配单词字符。它们是 A-Za-z0-9_(下划线)
  • - - 连字符 - 也不匹配连字符
  • ] - 关闭字符类
  • / - 结束定界符 - 关闭正则表达式

请注意,这仅匹配连字符(即 -)。它与真正的破折号字符(– 或 —)不匹配。

Use preg_replace:

$str = preg_replace('/[^\w-]/', '', $str);

The first argument to preg_replace is a regular expression. This one contains:

  • / - starting delimiter -- start the regex
  • [ - start character class -- define characters that can be matched
  • ^ - negative -- make the character class match only characters that don't match the selection that follows
  • \w - word character -- so don't match word characters. These are A-Za-z0-9 and _ (underscore)
  • - - hyphen -- don't match hypens either
  • ] - close the character class
  • / - ending delimiter -- close the regex

Note that this only matches hyphens (i.e. -). It does not match genuine dash characters (– or —).

永不分离 2024-11-15 17:11:10

接受 az、AZ、0-9、'-'、'_' 和空格:

$str = preg_replace("/[^a-z0-9\s_-]+/i", '', $tr);

无空格:

$str = preg_replace("/[^a-z0-9_-]+/i", '', $tr);

Accepts a-z, A-Z, 0-9, '-', '_' and spaces:

$str = preg_replace("/[^a-z0-9\s_-]+/i", '', $tr);

No spaces:

$str = preg_replace("/[^a-z0-9_-]+/i", '', $tr);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文