我有<form>
,用户可以仅从输入中删除字样,例如:
<input type="text" value="hello world 進撃進撃 lorem ipsum" name="so">
当我处理表单时,我想确保用户只删除了这些字词,并且没有添加自己的字词等。
因此,在处理表单时,我有原始值:
$original_value = 'hello world 進撃進撃 lorem ipsum';
用户编辑的值:
$edited_value = $_POST['so'];
如何验证?
我可以expode()
将值转换为字词,然后交叉检查$edited_value
中的$original_value
中是否存在$edited_value
中的字词。
我可以检查$original_value
中是否存在model.PurposeList = purposelist.Where(y => y.ID >= 4000 && y.ID <= 4050)
.Select(x => new SelectListItem()
{
Text =x.PurPose1,
Value=x.Id.ToString()
})
.ToList();
中的所有字符用户,但这是一个弱验证。
答案 0 :(得分:2)
我选择explode,strlen和in_array,这是一个例子
<?php
$error = false;
$original_value = 'hello world 進撃進撃 lorem ipsum';
$originalLenght = strlen($original_value); // get the string length
$parts = explode(" ", $original_value);
$newValue = "hello world newword";
$newLenght = strlen($newValue); // get the new string length
$newParts = explode(" ", $newValue);
//Check if the new sentence contains new words using in_array
foreach($newParts as $newWord){
if (!in_array($newWord, $parts)) {
$error = true;
}
}
//Check if the size of the new sentence is > to the original or error is true
if($newLenght > $originalLenght OR $error){
echo "Invalid Sentence";
}else{
echo "Valid Sentence";
}
答案 1 :(得分:0)
我将标签(单词)保存在一个数组中:
$tags = [
'tag1' => 1,
'tag2' => 1,
// ...
];
用户接受implode(' ', $tags)
中的input
。
然后验证可能如下所示:
$valid = true;
foreach (preg_split('/\s+/', $_POST['so']) as $tag) {
if (!isset($tags[$tag])) {
$valid = false;
break;
}
}