The parameter was bound with the wrong type. I guess the type isn't
enforced judging by how the code still seemed to work, but it probably
should be fixed.
Similar regexes are called for threads and posts, but they differed
needlessly, and the thread regex would drop anything between the `<a`
and `href="` parts. This makes them both the same and functional.
Using substr can cut a multi-byte character in half.
Also, if a long post with many multi-byte characters was reported, then
the mod interface would temporarily extend the body_truncate_char
setting to be sure to cover all of the *characters* in the report, but
this function would interpret body_truncate_char as a number of *bytes*,
so sometimes the end of the report's appended html would be cut off.