#22008 [Com]: fgetss : 0 vs false, html on multiple lines

From: Date: Tue, 18 Feb 2003 21:50:38 +0000
Subject: #22008 [Com]: fgetss : 0 vs false, html on multiple lines
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969351845@lists.php.net to get a copy of this message
ID: 22008 Comment by: phpdig at toiletoine dot net Reported By: airtravel at anet dot ne dot jp Status: Open Bug Type: Documentation problem Operating System: all PHP Version: 4.3.0 New Comment: This code : <?php print "Test one :".strip_tags('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Some title</TITLE> <META content="text/html; charset="ISO-8859-1" http-equiv=Content-Type>') ."<br>"; print "-----------<br>"; print "Test two :".strip_tags('<DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Some title</TITLE> <META content="text/html; charset="ISO-8859-1" http-equiv=Content-Type>') ."<br>"; print "-----------<br>"; print "Test three :".strip_tags('<!FOO BAR> real text <br>') ."<br>"; ?> Gives me : Test one : ----------- Test two : Some title ----------- Test three : Any "<!SOMETHING..." strips all !! Previous Comments: ------------------------------------------------------------------------ [2003-02-03 14:59:42] iliaa@php.net I've tried the latest CVS and tried to fetch the page you've specified. As far as I can tell the function had worked correctly, only non-html output was displayed. P.S. Philip the fgetss() function is supposed to handle tags that span multiple lines, so that should not be a problem. ------------------------------------------------------------------------ [2003-02-02 22:06:07] airtravel at anet dot ne dot jp This is something to do with <!DOCTYPE> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> seems to be causing problem. Again PHP4.2.3 or earlier treats this without problem. ------------------------------------------------------------------------ [2003-02-02 21:08:46] airtravel at anet dot ne dot jp Thank you for your comments. I found this problem only occurs when parsing specific html. Please try the following URL to see my problem. Thank you. <?php $fp = fopen("http://adds.aviationweather.gov/projects/adds/metars/index.php?metarIds=ksfo", "r"); while (($line=fgetss($fp, 4096))!==FALSE) { echo $line; } fclose($fp); ?> <?php $fp = fopen("http://adds.aviationweather.gov/projects/adds/metars/index.php?metarIds=ksfo", "r"); while (($line = strip_tags(fgets($fp, 4096)))!==FALSE) { echo $line; } fclose($fp); ?> ------------------------------------------------------------------------ [2003-02-02 15:46:14] philip@php.net c) Add a <note> regarding the 'blank lines' comment from Ilia. I don't think strip_tags() needs this <note> but maybe it does (doubtful). ------------------------------------------------------------------------ [2003-02-02 15:41:51] philip@php.net That or maybe a problem existed because it only gets/strips one line at a time which makes dealing with html tags spanning multiple lines not-so-good. So using this fgetss() example script vs strip_tags(file_get_contents($url)) will yield different results. Reclassifying as a doc problem for fgetss(): a) Add the 0 vs false entity b) Add a warning regarding spanning html tags; offer an alternative ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/22008 -- Edit this bug report at http://bugs.php.net/?id=22008&edit=1

« previous php.doc (#969351845) next »