gpt4 book ai didi

php - Codeigniter 表单验证 - 使用允许重音的正则表达式的自定义回调

转载 作者:搜寻专家 更新时间:2023-10-31 21:12:11 25 4
gpt4 key购买 nike

在有人抨击我之前,我想说我已经在 SO 和谷歌上尝试了所有解决方案,但没有任何效果:(。我需要一些启发:)

这是我自定义的 form_validation 回调函数。

代码片段

function _check_valid_text($text_string)
{
if(empty($text_string)) return TRUE;
if(!preg_match("/^[\pL\pN_ \w \-.,()\n]+$/i", $text_string))
{
// Set the error message:
$this->form_validation->set_message('_check_valid_text', 'Invalid Character or symbol');
return FALSE;
}
return TRUE;
}

我想要什么:

  1. 允许所有字母数字字符 [a-z、A-Z 和 0-9]
  2. 允许重音
  3. 也允许使用以下内容:空格、左大括号、右大括号、破折号、句号和逗号

奇怪的是

für 有效,即没有错误(耶!)。trägen 不会 :(

谁能告诉我哪里出错了?

PS:请不要提供解决方案,您的解决方案是将未被识别的字符包含到 preg_match 字符串中(例如添加 ä 到字符串中)。我正在寻找一个可行的通用解决方案。

PPS 我想向社区提出建议。拥有一个适用于各种情况的正则表达式库 怎么样?一个人可以编写一个正则表达式,一旦其他人验证它正在工作,它就可以被接受。虽然只是一个建议。我想这里有更多像我这样的新手,他们经常陷入 regex-hell :)

最佳答案

您必须添加 u 修饰符以通知正则表达式引擎您的字符串必须被视为 unicode 字符串。另请注意,您可以减少字符类,例如:

$subjects = array('Wer nur den lieben Gott läßt walten',
'Sei gegrüßet Jesu gütig',
'Komm, Gott, Schöpfer, Heiliger Geist',
'←↑→↓');

$pattern = '~^[\pL\pN\s,.()_-]++$~u';

foreach ($subjects as $subject) {
if (preg_match($pattern, $subject, $match))
echo '<br/>True';
else
echo '<br/>false';
}

关于php - Codeigniter 表单验证 - 使用允许重音的正则表达式的自定义回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com