- Improved r5861 change: Content converted to upper case can contain HTML tags, handle them properly

pull/1/head
alecpl 13 years ago
parent 67e5925897
commit f3599505f1

@ -249,11 +249,11 @@ class html2text
* @access public
*/
var $callback_search = array(
'/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i',
// <a href="">
'/<(h)[123456][^>]*>(.*?)<\/h[123456]>/i', // H1 - H3
'/<(b)[^>]*>(.*?)<\/b>/i', // <b>
'/<(strong)[^>]*>(.*?)<\/strong>/i', // <strong>
'/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i',
// <a href="">
'/<(th)[^>]*>(.*?)<\/th>/i', // <th> and </th>
);
@ -675,11 +675,11 @@ class html2text
switch($matches[1]) {
case 'b':
case 'strong':
return $this->_strtoupper($matches[2]);
return $this->_toupper($matches[2]);
case 'th':
return $this->_strtoupper("\t\t". $matches[2] ."\n");
return $this->_toupper("\t\t". $matches[2] ."\n");
case 'h':
return $this->_strtoupper("\n\n". $matches[2] ."\n\n");
return $this->_toupper("\n\n". $matches[2] ."\n\n");
case 'a':
// Remove spaces in URL (#1487805)
$url = str_replace(' ', '', $matches[3]);
@ -699,10 +699,31 @@ class html2text
}
/**
* Strtoupper multibyte wrapper function with HTML entities handling
* Strtoupper function with HTML tags and entities handling.
*
* @param string $str Text to convert
* @return string Converted text
*/
private function _toupper($str)
{
// string can containg HTML tags
$chunks = preg_split('/(<[^>]*>)/', $str, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
// convert toupper only the text between HTML tags
foreach ($chunks as $idx => $chunk) {
if ($chunk[0] != '<') {
$chunks[$idx] = $this->_strtoupper($chunk);
}
}
return implode($chunks);
}
/**
* Strtoupper multibyte wrapper function with HTML entities handling.
*
* @param string $str Text to convert
* @return string Converted text
* @param string $str Text to convert
* @return string Converted text
*/
private function _strtoupper($str)
{

Loading…
Cancel
Save