【发布时间】:2017-09-15 09:00:04
【问题描述】:
我有一个表单字段(字符串),我正在使用此脚本为其添加“空格”千位分隔符:
<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>
所以用户输入:“100000”,它会显示“100 000”
稍后,在表单提交期间,我有一个 PHP 语句来验证该字段是否包含数值。
现在问题来了($value是格式化字段的值):
- is_numeric($value) 不正确,因为“空格”千位分隔符,所以我尝试删除空格但是:
- is_numeric(str_replace(' ', '', $value)) 也不为真,不会删除toLocaleString添加的空格
在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;
}
谢谢!
【问题讨论】:
-
is_numeric(str_replace(" ","","100 000"));是true。向我们展示您的 PHP 代码。 -
是的,但问题是 toLocaleString 可能添加了一个 不是 空格的字符。如果我输入“100000”(呈现为“100 000”)然后执行 PHP:
ord(substr($value,4,1));我收到 ascii 代码 160... -
也许看看从 PHP 字符串中删除 ASCII 字符:stackoverflow.com/a/1176923/715105