Re: strip_tags bug or intended behavior?

AllenJB <[email protected]>
Newsgroups gmane.comp.php.general
Message-ID <[email protected]>
On 28/02/2024 20:04, Alan Nelson wrote:
> Passing the below example into strip_tags fails because "n<a.length" in the JavaScript is interpreted as an opening tag. All content after "<a.length" is removed.
>
> Does this seem like a bug or intended behavior? On one hand it seems like a bug because this is valid HTML, but on the other hand strip_tags is not documented as supporting JavaScript or intended for it.

A little of both. strip_tags is a naive implementation. It looks like 
it's assuming the <a is the start of a link tag here.

strip_tags doesn't actually try to parse the content using full HTML 
rules, as per the notes on the manual page: 
https://www.php.net/strip_tags#refsect1-function.strip-tags-notes

This is one of the reasons it's generally advised to avoid strip_tags.

To correctly handle HTML content you should use the DOM extension (or 
another HTML parser).

There's a possibility someone may look at this if you file an issue on 
PHP's GitHub tracker but it's equally possible it may just get closed 
with a "won't fix" due to strip_tags nature. 
https://github.com/php/php-src/issues

Personally I would file a separate issue on the Laravel project. While 
it's documented that assertSeeText relies on strip_tags, that's probably 
not really a good idea in my opinion: 
https://laravel.com/docs/10.x/http-tests#assert-see-text

This issue can be worked around by putting spaces around the < in the JS 
code: https://3v4l.org/VZ6t6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.