Das hier tut es:
<?php
class xTest {
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
foreach ( $_POST as $key => $value ) {
$body[$key] = filter_var( $value, FILTER_SANITIZE_SPECIAL_CHARS );
}
}
return $body;
}
}
$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST['foo']='<Foo>';
$_POST['bar']='<Bar>';
print_r( $_POST );
$body=xTest::getBody();
print_r( $body );
Testet Du mit echtem Request oder mit einer Simulation, in dem Du $_POST (wie von mir gezeigt) bzw. $_GET vor dem Test mit Daten befüllst?
Womöglich (sic: womöglich) verwendet das von Dir gezeigte filter_input() nicht $_POST oder $_GET sondern php://input bzw. HTTP_QUERY_STRING.
In dem Fall liegt es am Test, nicht am Skript... Mit der Simulation und filter_input() hatte ich nämlich auch kein Glück.