trim()任何不是字母或数字的前导或尾随字符

时间:2017-10-09 13:28:50

标签: php

我如何trim()以下句子

,, This is New, A new Sentence.,

成为

This is New, A new Sentence

我已经尝试了trim()rtrim(),但也没有用,

$str = ",, This is New, A new Sentence., ";
$str = trim(rtrim($str));

结果始终与trimrtrim() ,, This is New, A new Sentence.,

相同或相同

是否可以使用trim()函数处理此问题?

如果解决方案使用的是preg_replace(),那么我使用的当前RegExpreg_replace('/[\s,]+/',',',trim(rtrim($str)))

2 个答案:

答案 0 :(得分:2)

这是一个业务逻辑问题,即目标。在你的情况下似乎是:

字符串的开头和结尾应该是一个字母(或大概是数字)。

在这种情况下,通过REGEX,剥离违反此规定的任何内容。

preg_replace('/^[^a-z0-9]+|[^a-z0-9]+$|[\s,]{2,}/i', '', $str);

答案 1 :(得分:2)

尝试以下方法:

$str = ",, This is New, A new Sentence., ";
$str = trim(preg_replace("/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/", '', $str));

var_dump($str);

要使用/[\s,]+/,请尝试以下操作:

$str = trim(preg_replace_callback_array([
    "/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/" => function($match){}, 
    "/[\s,]+/" => function ($match)
    {
        return ",";
    }
    ], $str));

正则表达式将删除字符串中不是字母数字的所有尾随和前导字符。 trim()将删除空白