diff options
| -rw-r--r-- | ext/standard/string.c | 3 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug45485.phpt | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index f4bb26005d..54f680a00d 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -4519,12 +4519,13 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, /* fall-through */ case 'l': + case 'L': /* swm: If we encounter '<?xml' then we shouldn't be in * state == 2 (PHP). Switch back to HTML. */ - if (state == 2 && p > buf+2 && *(p-1) == 'm' && *(p-2) == 'x') { + if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) { state = 1; break; } diff --git a/ext/standard/tests/strings/bug45485.phpt b/ext/standard/tests/strings/bug45485.phpt new file mode 100644 index 0000000000..4d24c9ad87 --- /dev/null +++ b/ext/standard/tests/strings/bug45485.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #45485 (strip_tags and <?XML tag) +--FILE-- +<?php + +$s =<<< EOD +This text is shown <?XML:NAMESPACE PREFIX = ST1 /><b>This Text disappears</b> +EOD; + +$s = strip_tags($s); +echo htmlspecialchars($s),"\n"; + +$s =<<< EOD +This text is shown <?xml:NAMESPACE PREFIX = ST1 /><b>This Text disappears</b> +EOD; + +$s = strip_tags($s); +echo htmlspecialchars($s),"\n"; + +?> +--EXPECT-- +This text is shown This Text disappears +This text is shown This Text disappears |
