Таким образом, вот то, что я делаю точно:
У меня есть форма с подписью справа от него, я хочу записать в форме только A-Z, 0-9 и пробелы, и для подписи я хочу сделать противоположное, поэтому если пользовательская запись что-то не так, я могу показать то, что является проблемой for example: "Invalid Charachter"
Но я застреваю с +
и #
Я хочу проигнорировать их также от формы с регулярным выражением, таким образом, я могу показать "Invalid character"
сообщение для них также, поскольку я видел php, думает, что + знак = для интервала () или что, но я должен проигнорировать + и знаки # также. Это - мой текущий код:
preg_match_all("/[^\w\s]/",$string,$matches);
foreach($matches[0] as $ic){
if(strpos($str,$ic) || $str[0] == $ic){
$fullname_error = "Invalid Character";
}
}
Допустимые строки:
Не допустимые строки:
Вы можете сделать что-то вроде этого для обработки недопустимых символов:
$str = 'gum@#+boo';
if (preg_match_all('/[^\w\s]/u', $str, $matches)) {
echo sprintf(
'<p>Your input <b>%s</b> contains %d invalid character%s: <b>%s</b>.</p>',
htmlspecialchars($str),
count($matches[0]),
count($matches[0]) > 1 ? '' : 's',
implode('</b>, <b>', array_map('htmlspecialchars', array_unique($matches[0])))
);
echo '<p>Please choose a different input value.</p>';
}
Попробуйте это:
<?
function checkString($str)
{
echo "Testing ".$str."<br />";
// Check if there are invalid characters
if (!preg_match("/^[a-zA-Z0-9\s]+$/", $str))
{
echo "Oh no! There are invalid characters! :(<br />";
}
else
{
echo "There is no invalid character!!! :)<br />";
}
// What are the invalid characters?
if (preg_match("/[^(a-zA-Z0-9\s)]/", $str, $matches))
{
echo "Invalid character: ".$matches[0]."<br />";
}
}
checkString("This is a good string");
checkString("This is a not a good string$%#@#$");
?>