当数组索引不是英文字符时,如何使用Codeigniter从多维数组输入中获取POST数据



我有一段代码:

<?PHP
if ($_POST)
{
echo "<pre>";
print_r($_POST["test"]);
echo "</pre>";
}
?>
<form method="POST">
<input type="text" name="test[تهران][]" value="first">
<input type="text" name="test[تهران][]" value="second">
<input type="submit">
</form>

当我点击提交按钮时,输出是:

Array
(
[تهران] => Array
(
[0] => first
[1] => second
)
)

我已经将这段代码转换为Codeigniter控制器(Test.php(,如下所示:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Test extends CI_Controller {
public function index()
{
if ($_POST)
{
echo "<pre>";
print_r($_POST["test"]);
echo "</pre>";
}
echo '<form method="POST">
<input type="text" name="test[تهران][]" value="first">
<input type="text" name="test[تهران][]" value="second">
<input type="submit">
</form>';
}
}

但它是点击提交按钮后的代码输出:

Array
(
[0] => Array
(
[0] => first
[1] => second
)
)

我已经将Presian的数组索引改为英文,如下所示:

<input type="text" name="test[tehran][]" value="first">
<input type="text" name="test[tehran][]" value="second">

输出再次工作:

Array
(
[tehran] => Array
(
[0] => first
[1] => second
)
)

但由于某些原因,我需要使用波斯语。那么你能指导我如何在Codeigniter中用波斯语解决这个问题吗?

您需要查看system/core/Input.php中的_clean_input_keys()

默认的正则表达式

preg_match("/^[a-z0-9:_/-]+$/i", $str)

不适用于波斯字符。

您可以尝试将其替换为:

preg_match("/^[آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]+$/i", $str))

或者通过评论签出进行测试。

相关内容

  • 没有找到相关文章

最新更新