2014-02-15 65 views
0

一般我只想使用一個函數,它可以減少我的輸出(通過刪除換行符和製表符),但問題是,用這樣的普通代碼preg替換:替換標題屬性之外的所有換行符

return str_replace(array("\r\n", "\t"), '', $s); 

也標題屬性(例如,當你移動一個單詞和一個工具提示出現)被縮小,並且換行符會丟失。我想要保留換行符,這些換行符位於title =「textwithlinebreakhere」中,但是刪除所有外部換行符。

我不知道該如何實現,所以我希望你能幫助我。

謝謝!

回答

0

您應該使用preg_replace_all(),然後使用(?<!your_match_here)及其兄弟姐妹。我所說的兄弟姐妹的意思是negative_lookbehind,看看positive_lookbehind哪些條件搜索算法字符是否後或特定字母/符號/數字之前

+0

的問題是,我還沒有得到解決匹配非負的比賽,所以我怎麼會只有刪除所有行在標題標籤內部打破。 preg_replace('/ title =「(。*)」/','',$ s);徹底刪除一切..對不起,但我沒有真正使用這個功能,並難倒了。 – tan

+0

讓我們從字面上說話。你應該告訴正則表達式:請刪除所有br標籤,但不要在title =「and before」之後出現的thos。現在你應該強制你的大腦解決這個問題。這很容易。讓我找到它,我會發布它 – 2014-02-15 11:09:07

+0

是的,這聽起來很容易。我現在正在嘗試幾個小時,但不要完成它。請給我一個例子嗎? – tan

0

與trim_all()刪除不想要的字符 - PHP:

這個函數的靈感來源於PHP的內置函數 trim ,它從字符串的開頭和結尾刪除不需要的字符,並且如果沒有提供作爲第二個參數的這樣的字符,則刪除所提供的空格字符在這個列表中。

那麼, trim_all() 是做什麼的?

trim_all() 旨在從字符串的兩端刪除所有空白的實例,以及刪除字符串內的重複空格字符。但是,後來,我把它作爲一個通用功能,不僅僅是空白的修剪和清理,而且使它接受要替換的字符和要替換的字符。有了這個功能,您可以:

  1. 正常化的空格,讓所有的多個\ r,\ n,\ t,\ r \ n \ 0,0x0B中,0x20的 和所有控制字符可用單個空間替代,並且從字符串的兩端也被修剪;

  2. 刪除所有不需要的字符;

  3. 刪除重複;

  4. 用字符或字符串替換多次出現的字符。


function trim_all($str , $what = NULL , $with = ' ') 
{ 
    if($what === NULL) 
    { 
     // Character  Decimal  Use 
     // "\0"   0   Null Character 
     // "\t"   9   Tab 
     // "\n"   10   New line 
     // "\x0B"   11   Vertical Tab 
     // "\r"   13   New Line in Mac 
     // " "   32   Space 

     $what = "\\x00-\\x20"; //all white-spaces and control chars 
    } 

    return trim(preg_replace("/[".$what."]+/" , $with , $str) , $what); 
} 

,當你想從用戶的輸入刪除不需要的字符,該功能會有所幫助。以下是如何使用它。

示例使用:

$full_name = trim_all($_POST['full_name']); 

$full_name = trim_all($full_name , "\t" , "");