summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2014-05-20 10:39:06 +0200
committerAndrey Andreev <narf@devilix.net>2014-05-20 10:39:06 +0200
commitbcd237e0044d950c0bc3e559b34d3c1b8ea51deb (patch)
tree089b9456a43a0035fd98e8fac7283678daaea76c
parent69c56441df49280cb79c67b80ecafa4f52e4453f (diff)
parentf0ab81362bb7732ac1a4272e950c5b6cea59bb06 (diff)
Merge pull request #3058 from vlakoff/word_wrap
Fixes in word_wrap() functions
-rw-r--r--system/helpers/text_helper.php9
-rw-r--r--system/libraries/Email.php16
2 files changed, 12 insertions, 13 deletions
diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php
index ca19ab98b..1d0605ddc 100644
--- a/system/helpers/text_helper.php
+++ b/system/helpers/text_helper.php
@@ -430,12 +430,12 @@ if ( ! function_exists('word_wrap'))
// 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);
}
}
@@ -460,7 +460,7 @@ if ( ! function_exists('word_wrap'))
while (mb_strlen($line) > $charlim)
{
// 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;
}
@@ -491,8 +491,7 @@ if ( ! function_exists('word_wrap'))
}
}
- // Remove the unwrap tags and return
- return str_replace(array('{unwrap}', '{/unwrap}'), '', $output);
+ return $output;
}
}
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