preg_replace:替换title属性之外的所有换行符

时间:2014-02-15 10:26:11

标签: javascript php html replace

一般来说我只想使用一个函数,它会缩小我的输出(通过删除换行符和制表符),但问题是,使用像这样的普通代码

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

标题属性(例如,当您移动单词并显示工具提示时)也会缩小,并且换行符会丢失。我想保留换行符,这些换行符位于title =“textwithlinebreakhere”内,但删除了所有换行符。

我不知道如何实现这一点,所以我希望你能帮助我。

谢谢!

2 个答案:

答案 0 :(得分:0)

您应该使用preg_replace_all(),然后使用(?<!your_match_here)及其兄弟姐妹。我对兄弟姐妹的意思是negative_lookbehind和positive_lookbehind,它会调整你的搜索算法以查看某个字符是在某个字母/符号/数字之后还是之前

答案 1 :(得分:0)

使用trim_all()移除不需要的字符 - PHP:

这个功能的灵感来自PHP的内置功能 修剪 从字符串的开头和结尾删除不需要的字符,如果没有提供这样的字符作为第二个参数 修剪 ,删除此列表中提供的空白字符。

那么,是什么呢 trim_all() 办?

trim_all() 旨在从字符串的两端删除所有白色空格实例,以及删除字符串中的重复空格字符。但是,稍后,我将其作为一个通用功能,不仅仅是进行白色空间修剪和清洁,而是让它接受字符替换和字符替换。使用此功能,您可以:

  1. 规范化空格,以便所有多个\ r,\ n,\ t,\ r \ n,\ 0,0x0b,0x20     并且所有控制字符都可以用单个空格替换,也可以从字符串的两端进行操作;

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

  3. 删除重复项;

  4. 用字符或字符串替换多次出现的字符。


  5. 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" , "" );