繁体   English   中英

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

[英]php regex replace slashes and spaces and hyphens

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

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

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM