]> granicus.if.org Git - php/commitdiff
- Fix for bug 11904
authorDerick Rethans <derick@php.net>
Sun, 9 Sep 2001 11:42:36 +0000 (11:42 +0000)
committerDerick Rethans <derick@php.net>
Sun, 9 Sep 2001 11:42:36 +0000 (11:42 +0000)
#- This is possibly not the best solution... feel free to improve

ext/standard/string.c

index fb56de4b39959eb659c1cb1b3c1e56936c094e0a..de550c451c81e58ec924de360037c01d1e056f4d 100644 (file)
@@ -2978,14 +2978,27 @@ PHP_FUNCTION(hebrevc)
 PHP_FUNCTION(nl2br)
 {
        zval **str;
+       char* tmp;
+       int new_length;
        
        if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &str)==FAILURE) {
                WRONG_PARAM_COUNT;
        }
        
        convert_to_string_ex(str);
-       
-       php_char_to_str((*str)->value.str.val, (*str)->value.str.len,'\n', "<br />\n", 7, return_value);
+
+       /* Windows style line-endings */
+       tmp = boyer_str_to_str((*str)->value.str.val, (*str)->value.str.len, "\r\n", 2, "<br />\r\n", 8, &new_length);
+       if (new_length != (*str)->value.str.len)
+               RETURN_STRINGL (tmp, new_length, 0);
+       efree (tmp);
+       /* Mac style line-endings */    
+       tmp = boyer_str_to_str((*str)->value.str.val, (*str)->value.str.len, "\n\r", 2, "<br />\n\r", 8, &new_length);
+       if (new_length != (*str)->value.str.len)
+               RETURN_STRINGL (tmp, new_length, 0);
+       efree (tmp);
+       /* Unix style line-endings */
+       php_char_to_str((*str)->value.str.val,(*str)->value.str.len, '\n',"<br />\n", 7, return_value);
 }
 /* }}} */