summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Williamson <awilliam@redhat.com>2014-01-09 11:59:03 -0800
committerAdam Williamson <awilliam@redhat.com>2014-01-09 12:10:08 -0800
commitb60f7550d2d8b9fe1d86ba9029a89b7e8a150817 (patch)
treed5a54af19778ea5a58ef53315507a504dbce9923
parent1dc1ff1316133fa1f4c436391246e700df110255 (diff)
downloadphp-openid-b60f7550d2d8b9fe1d86ba9029a89b7e8a150817.zip
php-openid-b60f7550d2d8b9fe1d86ba9029a89b7e8a150817.tar.gz
php-openid-b60f7550d2d8b9fe1d86ba9029a89b7e8a150817.tar.bz2
Yadis: drop custom replaceEntities() function and use html_entity_decode
Yadis' ParseHTML.php has a replaceEntities() function for replacing HTML entities, with a comment that appears to explain its existence by stating "Replace numeric entities because html_entity_decode doesn't do it for us". This is breaking with PHP 5.5 because it uses the deprecated /e modifier for preg_replace() - https://github.com/openid/php-openid/issues/108 . I think this custom function is no longer needed at least with PHP 5. PHP 5 has had support for replacing numeric entities since 2003, and its entity handling code has been refined quite a lot since then. replaceEntities() has been there since 2006, and probably earlier. I guess at that time PHP 4 compatibility was still important so this was needed - I don't think PHP 4's html_entity_decode() has ever had numeric entity support - but now PHP 5 is a decade old and there's a separate PHP 4 branch of php-openid, I think we can ditch replaceEntities() in the main branch!
-rw-r--r--Auth/Yadis/ParseHTML.php25
1 files changed, 1 insertions, 24 deletions
diff --git a/Auth/Yadis/ParseHTML.php b/Auth/Yadis/ParseHTML.php
index 6f0f8b7..255d7cd 100644
--- a/Auth/Yadis/ParseHTML.php
+++ b/Auth/Yadis/ParseHTML.php
@@ -66,29 +66,6 @@ class Auth_Yadis_ParseHTML {
}
/**
- * Replace HTML entities (amp, lt, gt, and quot) as well as
- * numeric entities (e.g. #x9f;) with their actual values and
- * return the new string.
- *
- * @access private
- * @param string $str The string in which to look for entities
- * @return string $new_str The new string entities decoded
- */
- function replaceEntities($str)
- {
- foreach ($this->_entity_replacements as $old => $new) {
- $str = preg_replace(sprintf("/&%s;/", $old), $new, $str);
- }
-
- // Replace numeric entities because html_entity_decode doesn't
- // do it for us.
- $str = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $str);
- $str = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $str);
-
- return $str;
- }
-
- /**
* Strip single and double quotes off of a string, if they are
* present.
*
@@ -216,7 +193,7 @@ class Auth_Yadis_ParseHTML {
$link_attrs = array();
foreach ($attr_matches[0] as $index => $full_match) {
$name = $attr_matches[1][$index];
- $value = $this->replaceEntities(
+ $value = html_entity_decode(
$this->removeQuotes($attr_matches[2][$index]));
$link_attrs[strtolower($name)] = $value;