我有一个表单字段(字符串),我在其中添加了"空格"使用此脚本的千位分隔符:
<script type="text/javascript">
// https://stackoverflow.com/questions/19470499/how-to-format-input-box-text-as-i-am-typing-it
jQuery(document).ready(function($) {
$("#input_10").on('keyup', function(){
var n = parseInt($(this).val().replace(/\D/g,''),10);
$(this).val(n.toLocaleString());
});
</script>
所以用户类型:&#34; 100000&#34;它将显示&#34; 100 000&#34;
稍后,在表单提交期间,我有一个PHP语句,用于验证该字段是否包含数值。
现在出现了问题($ value是格式化字段的值):
如何删除在PHP中进行字段验证时在jQuery中添加的toLocaleString格式?
编辑:使用的PHP代码:
add_filter( 'gform_field_validation_1_10', 'bja_gf_custom_validation10', 10, 4 );
function bja_gf_custom_validation10( $result, $value, $form, $field ) {
$formatedNumber = str_replace(' ', '', $value);
if ( $result['is_valid'] && !is_numeric($formatedNumber) ) {
$result['is_valid'] = false;
$result['message'] = 'formatedNumber:' . $formatedNumber;
}
return $result;
}
谢谢!
答案 0 :(得分:0)
ASCII代码160 =非破坏空间。
尝试使用此正则表达式捕获任何类型的空格或不可见的分隔符。
$re = '/\p{Z}/'; // (any kind of whitespace or invisible separator)
$str = '100 000'; // Your form input
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
获得匹配/结果后,您可以将其从变量中删除。
在此处测试:https://regex101.com/r/sdHYmw/1
如果只是要删除的非中断空间,并且您的页面使用UTF-8编码,在这种情况下,非中断空间的编码是0xC2 0xA0 ...您也可以尝试这个:
$YourFormInput = trim($YourFormInput, "\xC2\xA0");
答案 1 :(得分:0)
你有使用权: preg_replace函数(&#34; / [^ \ d] + /&#34;&#34;&#34;,$ my_var);