2017-10-09 45 views
0

我怎樣才能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(),則當前RegEx我使用是preg_replace('/[\s,]+/',',',trim(rtrim($str)))

+1

'TRIM()'是用來去除空格,沒有其他任何字符。一個解決方案將使用正則表達式 – Phate01

+1

使用$ str = rtrim(trim(ltrim($ str,',,')),'。,'); –

+0

@ Phate01這是不正確的。 '修剪 - 從string' http://php.net/manual/en/function.trim.php –

回答

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()將刪除空白

2

這是業務邏輯的一個問題,即目的。在你的情況下,它似乎是:

字符串的開始和結束應該是一個字母(或大概數字)。

在這種情況下,通過正則表達式,剝去任何違反此。

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

難道你不想包含大寫的A-Z嗎? – Manav

+1

是的,但是由OP提供的示例_ ,,這是新的,一個新的句子,_確實以大寫字母 – Manav

+1

好點 - 我混淆了不同的問題。編輯。 – Utkanos

相關問題