mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00
commit
00db03b57c
2 changed files with 23 additions and 3 deletions
|
@ -4711,6 +4711,7 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
|
|||
size_t pos, i = 0;
|
||||
char *allow_free = NULL;
|
||||
const char *allow_actual;
|
||||
char is_xml = 0;
|
||||
|
||||
if (stateptr)
|
||||
state = *stateptr;
|
||||
|
@ -4806,7 +4807,10 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
|
|||
switch (state) {
|
||||
case 1: /* HTML/XML */
|
||||
lc = '>';
|
||||
in_q = state = 0;
|
||||
if (is_xml && *(p -1) == '-') {
|
||||
break;
|
||||
}
|
||||
in_q = state = is_xml = 0;
|
||||
if (allow) {
|
||||
if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
|
||||
pos = tp - tbuf;
|
||||
|
@ -4935,8 +4939,8 @@ PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, int *stateptr, const cha
|
|||
* state == 2 (PHP). Switch back to HTML.
|
||||
*/
|
||||
|
||||
if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) {
|
||||
state = 1;
|
||||
if (state == 2 && p > buf+2 && strncasecmp(p-4, "<?xm", 4) == 0) {
|
||||
state = 1; is_xml=1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
16
ext/standard/tests/strings/bug70720.phpt
Normal file
16
ext/standard/tests/strings/bug70720.phpt
Normal file
|
@ -0,0 +1,16 @@
|
|||
--TEST--
|
||||
Bug #70720 (strip_tags() doesnt handle "xml" correctly)
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(strip_tags('<?php $dom->test(); ?> this is a test'));
|
||||
var_dump(strip_tags('<?php $xml->test(); ?> this is a test'));
|
||||
var_dump(strip_tags('<?xml $xml->test(); ?> this is a test'));
|
||||
|
||||
/* "->" case in HTML */
|
||||
var_dump(strip_tags("<span class=sf-dump-> this is a test</span>"));
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(15) " this is a test"
|
||||
string(15) " this is a test"
|
||||
string(15) " this is a test"
|
||||
string(15) " this is a test"
|
Loading…
Add table
Add a link
Reference in a new issue