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);
}
/* }}} */