diff options
author | Andrey Andreev <narf@devilix.net> | 2014-05-20 10:39:06 +0200 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2014-05-20 10:39:06 +0200 |
commit | bcd237e0044d950c0bc3e559b34d3c1b8ea51deb (patch) | |
tree | 089b9456a43a0035fd98e8fac7283678daaea76c /system/libraries | |
parent | 69c56441df49280cb79c67b80ecafa4f52e4453f (diff) | |
parent | f0ab81362bb7732ac1a4272e950c5b6cea59bb06 (diff) |
Merge pull request #3058 from vlakoff/word_wrap
Fixes in word_wrap() functions
Diffstat (limited to 'system/libraries')
-rw-r--r-- | system/libraries/Email.php | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/system/libraries/Email.php b/system/libraries/Email.php index 63b7dc31c..c39a26a15 100644 --- a/system/libraries/Email.php +++ b/system/libraries/Email.php @@ -1173,16 +1173,16 @@ class CI_Email { // If the current word is surrounded by {unwrap} tags we'll // strip the entire chunk and replace it with a marker. $unwrap = array(); - if (preg_match_all('|(\{unwrap\}.+?\{/unwrap\})|s', $str, $matches)) + if (preg_match_all('|\{unwrap\}(.+?)\{/unwrap\}|s', $str, $matches)) { for ($i = 0, $c = count($matches[0]); $i < $c; $i++) { $unwrap[] = $matches[1][$i]; - $str = str_replace($matches[1][$i], '{{unwrapped'.$i.'}}', $str); + $str = str_replace($matches[0][$i], '{{unwrapped'.$i.'}}', $str); } } - // Use PHP's native public function to do the initial wordwrap. + // Use PHP's native function to do the initial wordwrap. // We set the cut flag to FALSE so that any individual words that are // too long get left alone. In the next step we'll deal with them. $str = wordwrap($str, $charlim, "\n", FALSE); @@ -1193,7 +1193,7 @@ class CI_Email { { // Is the line within the allowed character count? // If so we'll join it to the output and continue - if (strlen($line) <= $charlim) + if (mb_strlen($line) <= $charlim) { $output .= $line.$this->newline; continue; @@ -1203,16 +1203,16 @@ class CI_Email { do { // If the over-length word is a URL we won't wrap it - if (preg_match('!\[url.+\]|://|wwww.!', $line)) + if (preg_match('!\[url.+\]|://|www\.!', $line)) { break; } // Trim the word down - $temp .= substr($line, 0, $charlim-1); - $line = substr($line, $charlim-1); + $temp .= mb_substr($line, 0, $charlim - 1); + $line = mb_substr($line, $charlim - 1); } - while (strlen($line) > $charlim); + while (mb_strlen($line) > $charlim); // If $temp contains data it means we had to split up an over-length // word into smaller chunks so we'll add it back to our current line |