程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

php 正则表达式替换斜杠和空格和连字符

发布于2022-08-18 07:28     阅读(1172)     评论(0)     点赞(17)     收藏(0)


我需要将几个字符串组合引入一个模式,即应该删除多个空格,应该用单个连字符替换双连字符,并且应该用单个连字符替换单个空格。

我已经尝试过这种表达方式。

$output = preg_replace( "/[^[:space:]a-z0-9]/e", "", $output );
$output = trim( $output );
$output = preg_replace( '/\s+/', '-', $output );

但这在少数组合中失败了。

我需要帮助才能使所有这些组合完美地工作:

1. steel-black
2. steel- black
3. steel    black

我也应该删除其中的任何一个\r\n\t


解决方案


你可以使用这样的东西(感谢@Robin的更好建议):

$s = 'here is  a test-- with -- spaces-and hyphens';
$s = preg_replace('/[\s-]+/', '-', $s);
echo $s;

用单个连字符替换任意数量的空白字符或连字符。您可能还想使用trim($s, '-')删除任何前导或尾随连字符。也可以直接在正则表达式中执行此操作,但我认为不这样做更清楚。

输出:

here-is-a-test-with-spaces-and-hyphens

如果您想删除其他字符,您可以简单地将它们添加到括号表达式中,例如/[()\s-]+/也可以删除括号。但是,您可能更愿意只替换所有非单词字符:

$s = 'here is  a test- with -- spaces ( ), hyphens (-), newlines
    and tabs (  )';
$s = trim(preg_replace('/[\W]+/', '-', $s), '-');
echo $s;

这将替换除连字符以外的任意数量的[a-zA-Z0-9_]字符,并删除任何前导和尾随连字符。

输出:

here-is-a-test-with-spaces-hyphens-newlines-and-tabs


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/356606/f3486da6a31b98924d7c/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

17 0
收藏该文
已收藏

评论内容:(最多支持255个字符)