mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08: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;
|
size_t pos, i = 0;
|
||||||
char *allow_free = NULL;
|
char *allow_free = NULL;
|
||||||
const char *allow_actual;
|
const char *allow_actual;
|
||||||
|
char is_xml = 0;
|
||||||
|
|
||||||
if (stateptr)
|
if (stateptr)
|
||||||
state = *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) {
|
switch (state) {
|
||||||
case 1: /* HTML/XML */
|
case 1: /* HTML/XML */
|
||||||
lc = '>';
|
lc = '>';
|
||||||
in_q = state = 0;
|
if (is_xml && *(p -1) == '-') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
in_q = state = is_xml = 0;
|
||||||
if (allow) {
|
if (allow) {
|
||||||
if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
|
if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
|
||||||
pos = tp - tbuf;
|
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.
|
* state == 2 (PHP). Switch back to HTML.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) {
|
if (state == 2 && p > buf+2 && strncasecmp(p-4, "<?xm", 4) == 0) {
|
||||||
state = 1;
|
state = 1; is_xml=1;
|
||||||
break;
|
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