我有一个自定义的post表单,它将数据发送到使用wp\\u insert\\u post创建post的页面。我可以轻松清理大多数数据,但我的标记有一些问题,我在数组中检索:
$tags = $_POST[\'tags\'];
在将这些标记用作tags\\u输入之前,如何成功清理所有名称?谢谢
我有一个自定义的post表单,它将数据发送到使用wp\\u insert\\u post创建post的页面。我可以轻松清理大多数数据,但我的标记有一些问题,我在数组中检索:
$tags = $_POST[\'tags\'];
在将这些标记用作tags\\u输入之前,如何成功清理所有名称?谢谢
如果有人感兴趣,我可以这样解决:
$tags = $_POST[\'tags\'];
if (count($tags) > 5){
echo \'Niet meer dan 5 tags\';
$stop = true;
}
if (is_array($tags)) {
foreach ($tags as &$tag) {
$tag = esc_attr($tag);
}
unset($tag );
} else {
$tags = esc_attr($tags);
}
这里有一种使用PHP的方法array map 功能:
// Good idea to make sure things are set before using them
$tags = isset( $_POST[\'tags\'] ) ? (array) $_POST[\'tags\'] : array();
// Any of the WordPress data sanitization functions can be used here
$tags = array_map( \'esc_attr\', $tags );
我需要一个递归的卫生设施,所以我的解决方案是:
/**
* Recursive sanitation for an array
*
* @param $array
*
* @return mixed
*/
function recursive_sanitize_text_field($array) {
foreach ( $array as $key => &$value ) {
if ( is_array( $value ) ) {
$value = recursive_sanitize_text_field($value);
}
else {
$value = sanitize_text_field( $value );
}
}
return $array;
}
几乎所有情况下都可以使用此功能。
/**
* Recursive sanitation for text or array
*
* @param $array_or_string (array|string)
* @since 0.1
* @return mixed
*/
function sanitize_text_or_array_field($array_or_string) {
if( is_string($array_or_string) ){
$array_or_string = sanitize_text_field($array_or_string);
}elseif( is_array($array_or_string) ){
foreach ( $array_or_string as $key => &$value ) {
if ( is_array( $value ) ) {
$value = sanitize_text_or_array_field($value);
}
else {
$value = sanitize_text_field( $value );
}
}
}
return $array_or_string;
}