我如何在PHP变量中空格替换标签?(How do I replace tabs with space

2019-06-26 19:10发布

$data包含制表符,前导空格和多个空格。 我希望用空格替换所有的标签。 一个单一领域的多个空间,并删除前导空格。

事实上财产以后,将关闭此输入数据:

[    asdf asdf     asdf           asdf   ] 

为输出数据:

[asdf asdf asdf asdf]

我该怎么做呢?

Answer 1:

$data = trim(preg_replace('/\s+/g', '', $data));


Answer 2:

内饰方面,用一个空格代替制表符和多余的空格:

$data = preg_replace('/[ ]{2,}|[\t]/', ' ', trim($data));


Answer 3:

假设没有方括号,字符串的一部分,你只是使用它们用于说明目的,则:

$new_string = trim(preg_replace('!\s+!', ' ', $old_string));

你也许可以做到这一点有一个正则表达式,但它会是一个相当复杂的正则表达式。 以上是要简单得多。

注:我也假设你不想与“AB CD”,以取代“AB \ t \ TCD”(\ t是一个标签)。



Answer 4:

$data = trim($data);

这摆脱你的领导(和尾)空间。

$pattern = '/\s+/';
$data = preg_replace($pattern, ' ', $data);

那会使一个或多个空格的任意集合逼到一个空间。

$data = str_replace("\t", " ", $data);

这摆脱你的标签。



Answer 5:

$new_data = preg_replace("/[\t\s]+/", " ", trim($data));


Answer 6:

这个答案需要的问题完全从字面上:它是关注空格和制表符。 诚然,OP 可能还希望包括其他种类的空白在什么被修剪/压缩,但是让我们假设他想保留嵌入CR和/或LF。

首先,让我们设置一些常量。 这将允许两个便于理解和可维护性,应该修改成为必需。 我把一些额外的空间,让你可以更容易地比较异同。

define( 'S', '[ \t]+'      ); # Stuff you want to compress; in this case ONLY spaces/tabs
define( 'L', '/\A'.S.'/'   ); # stuff on the Left edge will be trimmed
define( 'M',   '/'.S.'/'   ); # stuff in the Middle will be compressed
define( 'R',   '/'.S.'\Z/' ); # stuff on the Right edge will be trimmed
define( 'T', ' '           ); # what we want the stuff compressed To

我们使用\A\Z 转义字符到指定主题的开头和结尾,而不是典型的^$它们是面向行的元字符 。 因为他们需要在这种情况下尽可能多的“防御性”节目,应该值这个与其说是S使他们需要改变的未来。

现在的秘密武器:我们要采取一些特殊的语义的优势了preg_replace ,即(强调)

如果在替换阵列更少的元件比图案阵列中,任何额外的模式将通过一个空字符串来代替。

function trim_press( $data ){
    return preg_replace( [ M, L, R ], [ T ], $data );
}

因此,而不是一个模式字符串和替换字符串,我们使用了一个图案阵列和替换阵列,这导致额外的图案LR被修剪。



Answer 7:

如果您需要删除  太。

$data = trim(preg_replace('/\s+|nbsp;/g', '', $data));


Answer 8:

只要使用这个表达式

$str = trim(preg_replace('/\s\s+/', ' ', $str));

它会用一个空格替换所有的制表符和空格,

这里的标志+在正则表达式是指一个或更多次,模式意味着,只要有两个或多个空格,用一个空格替换它



文章来源: How do I replace tabs with spaces within variables in PHP?