Working on this task requires knowledge of regular expressions in PHP.
Currently, the applyDiffStyle() function uses the regex
/(<[^>]+)class=(['\"])$class\\2([^>]*>)/
to try to detect the CSS classes.
This only works if the element has only one class and fails for some classes (mentioned on T36800) which appear at
https://en.wikipedia.org/w/index.php?title=Special:RecentChanges&feed=rss&action=purge
E.g.:
- diff: http://www.rubular.com/r/Q6x0qNBRmo
- diffchange: http://www.rubular.com/r/0ToRFfpvXA
Something like
(<[^>]+)class=(['\"])$class(| .+?)\\2([^>]*>)
would be slightly better:
http://www.rubular.com/r/BGlcrGfRtd
but still wouldn't work in case there is some class before the specified class:
http://www.rubular.com/r/xLWx9MWBSL
Besides, notice that
\"
has only one backslash and
\\2
has two. I don't know what is the proper syntax for this in PHP strings but it is likely that one of the two needs to be fixed.
See also: