Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 强制输入框以字符开头_Php_Html_Text_Input_Textbox - Fatal编程技术网

Php 强制输入框以字符开头

Php 强制输入框以字符开头,php,html,text,input,textbox,Php,Html,Text,Input,Textbox,我找了很多,但都没找到。我试图使输入框以“#”开头。它不能只是一个#,它需要在输入框中。无法执行此操作吗?如果要检查此服务器端,因为用户可以而且可能会删除它: function prependHash($string) { if(substr($string, 0, 1) === "#") { return $string } else return "#" . $string; } 相关HTML: <input type="text" name="someInput" valu

我找了很多,但都没找到。我试图使输入框以“#”开头。它不能只是一个
#
,它需要在输入框中。无法执行此操作吗?

如果要检查此服务器端,因为用户可以而且可能会删除它:

function prependHash($string) {
  if(substr($string, 0, 1) === "#") { return $string }
  else return "#" . $string;
}
相关HTML:

<input type="text" name="someInput" value="#">

您还可以在客户端使用一点javascript来实现这一点

function addHash(elem) {
  var val = elem.value;
  if(!val.match(/^#/)) {
    elem.value = "#" + val;
  }
}
还有HTML

<input type="text" onkeyup="addHash(this)"/>


每次用户在文本框中输入一个字符时,addHash都会检查第一个字符是否为哈希,如果不是,则添加哈希标记。

您可以在后面添加它吗?这是用于表单
POST
?您的意思是
value=“#”
Mike的解决方案适用于检查发布到服务器的任何内容。但是,我的解决方案不允许用户删除#。除非他们禁用了javascript,或者不使用表单(这是可能的)向服务器发送邮件,否则#将始终位于输入框的前面。@Robbert的解决方案是一个很好的美学解决方案。他上面的评论进一步说明了一点,即您应该很少信任从客户机发送的数据。要使用它,您肯定需要检查a)是否正在使用浏览器,b)是否启用了JS。即使使用这两种方法,您仍然应该在服务器端进行快速检查。这两种解决方案在普通计算机上运行得非常好,但是,我发现在移动设备上,您仍然可以删除散列。有没有办法防止这种情况发生?这似乎并没有改变什么。不过,关于删除错误,你是对的。如果删除错误已经存在,它不应该改变任何东西。如果它不是(因为用户删除了它),这将简单地将其前置到字符串。
<input type="text" onkeyup="addHash(this)"/>