【问题标题】:PHP - apply strtolower to form field [closed]PHP - 将strtolower应用于表单字段[关闭]
【发布时间】:2013-10-21 17:18:09
【问题描述】:

我绝对确定这将被覆盖,但已经搜索并且看不到如何以这种形式应用 strtolower。也许我正在寻找错误的解决方案。我有一个表格:

<form id="demo-b" method="get" action="<?php echo home_url( '/' ); ?>">
<div class="input-prepend">
<input class="skip-search" type="search" placeholder="Search" id="prependedInput" name="s" value="<?php the_search_query(); ?>">
<input type="hidden" name="sentence" value="1">
</div>
</form>

我正在尝试将搜索输入转换为小写,从我所见 PHP strtolower 可能是解决方案,但我不确定如何正确插入它。有人可以帮忙吗?也许我有错误的解决方案?

其他信息...

我正在尝试清理搜索输入以将用户输入转换为我网站上使用的术语。只有几个术语,并且使用了以下代码(这是 Wordpress,如果我在错误的地方发帖,我深表歉意,但我认为这是一个特定的 PHP 问题)...

/*sanitise search queries manually*/
$search_replacements = array(
'tilt shift' => 'tilt-shift',
'depth of focus' => 'depth of field'
);
function modify_search_term($request_vars) {
global $search_replacements;
if (!empty($request_vars['s']) && !empty($search_replacements[$request_vars['s']])) {
    $request_vars['s'] = $search_replacements[$request_vars['s']];
}
return $request_vars;
}
add_filter('request', 'modify_search_term');

问题是搜索词不区分大小写,但是一旦我将它们添加到此数组中,它们就会区分大小写。我可以添加该术语的多个版本,但将搜索词转换为小写以便返回正确的结果似乎是明智的。也许这是需要编辑才能正确编辑服务器端表单输入的代码?就我而言,客户可以随心所欲地使用大写字母。

【问题讨论】:

  • 如,您只想输入小写字符?或者你想在用户输入之前自己插入一个小写字符串?
  • 您的意思是在处理表单的脚本中将其转换为小写吗?
  • 你的意思是 strtolower($_GET['s']) ?
  • 将您的 UI 与 strlower 的东西分离,并使用 javascript 将该字符串小写,作为显示和提交验证的一部分。然后在您的服务器端(在任何类中使用该搜索词)在搜索之前将其降低,然后再将其传递回 UI。
  • @MikeMcMahon,是的,我知道您应该在服务器端进行验证,但 OP 没有提及任何相关内容。他特别说他想“在表单中”这样做,而不是他需要转换表单的发布数据。

标签: php forms lowercase


【解决方案1】:

您需要为此使用 Javascript,因为 PHP 是在您提交表单后处理的,或者如果您使用 AJAX,那么这是一个不同且低效的故事。

Javascript

<input type="text" value="" onKeyPress="this.value = this.value.toLowerCase();" onKeyUp="this.value = this.value.toLowerCase();" onKeyDown="this.value = this.value.toLowerCase();">

JSFiddle

服务器端 PHP

$_POST['s'] = strtolower($_POST['s']);

// Do whatever you want with the search term now because it is lower-case

【讨论】:

  • 非常感谢大家。这个答案涵盖了双方。老实说,我不确定在哪里添加/调整我的代码中的服务器端代码,所以如果有人可以提供帮助,那就太好了。无论如何,Javascript都会将小写文本传递给服务器,并且我已经测试了移动设备和各种浏览器到IE8。如果客户端出现问题,服务器端的重新执行将非常有用。非常感谢接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多