我需要一个可以接受名字(姓和名)的代码。因此,我需要它仅接受字母,并且也应接受带重音的字母(诸如á,č,ť,í,é,ľ,š,ď,ž,ý等字母->这些都是斯洛伐克字母)。在姓和名之间加上一个空格。
我已经尝试过在该网站上找到的一些代码,但没有任何效果。
我想填写一张表格,如果姓名填写错误,它将给您警告。现在我有了这段代码:
eventImgUrl: "www.test.test"
这是我使用的两个功能:
const onSubmit = (e) => {
e.preventDefault();
if (eventImage) {
const uploadImage = storage.ref(`EventImages/${values.eventName}`)
uploadImage.put(eventImage).then(() => {
storage.ref('EventImages').child(values.eventName).getDownloadURL().then(url => {
dbref.add({
eventName: values.eventName,
eventVenue: values.eventVenue,
eventAddress: values.eventAddress,
eventCategory: values.eventCategory,
eventOrganizer: values.eventOrganizer,
eventPhone: values.eventPhone,
eventEmail: values.eventEmail,
eventDetails: values.eventDetails,
eventDate: selectedDate.toDateString(),
eventTime: selectedDate.toLocaleTimeString(),
eventImgUrl: url
}).then((docRef) => {
console.log("Document written with ID: ", docRef.id);
setValues('');
setImg('');
setUrl('');
}).catch((error) => {
console.error("Error adding document: ", error);
});
})
})
}
}
但是问题是当我不填写姓名时,我得到的警告是“您使用了错误的字母”,但我应该得到“您未填写姓名”。问题在这里
$mistakes = array();
if (isset($_POST["submit"])) {
if (isset($_POST['name'])) $name = securee($_POST['name']); else $name = '';
if (!check_lenght_of_name($name)) $mistakes['name'] = 'Name has wrong lenght';
if (empty($name)) $mistakes['meno'] = 'You didnt fill name';
if (!preg_match("~^\p{L}+(?:[-\h']\p{L}+)*$~u", $name)) $mistakes['name'] = 'You used a wrong letter';
}
if (!empty($mistakes)) {
echo '<p class="mist"><strong>Mistakes</strong>:<br>';
foreach($mistakes as $mis) {
echo "$mis<br>\n";
}
echo '</p>';
}
我已经尝试了几个preg_match代码,但是没有任何效果,因为我希望它能正常工作。有什么想法吗?
答案 0 :(得分:0)
我认为您需要此正则表达式:
/^[A-Záčťíéľšďžý]+ [A-Záčťíéľšďžý]+$/i
/^[A-Záčťíéľšďžý]+
:必须以批准的字符集中的至少一个字符开头
:必须紧跟一个空格[a-zA-Záčťíéľšďžý]+$/
:必须以批准的字符集中的至少一个字符结尾i
:不区分大小写对于以后的正则表达式调试,我强烈建议使用https://regexr.com/,以便您可以非常迅速地编写和测试正则表达式,并且网站将解释正则表达式的作用。