Сопоставьте только буквы и специальные символы с RegExp

Как разрешить только буквы и специальные символы с регулярным выражением?

Я предлагаю вам использовать строитель REGKS Builder и экспериментировать с большим количеством примеров с правой стороны. Есть много вариантов, чтобы выполнить эту работу. Если вы хотите быть явным, вы можете использовать:

/[a-zA-Z!@#$%¨&*()-=+/*.{}]/ 

Ответ Тони также будет работать, но содержит больше дополнительных символов, чем те, которые вы определили в своем комментарии.

Эта

  $str = $_REQUEST["htmlstringinput"]; preg_match("([\w\-]+[@#%.])", $str); 

для букв, цифр и специальных символов в этом специальном диапазоне символов [@#%.] разрешены

и это

  $str = $_REQUEST["htmlstringinput"]; preg_match("([-a-zA-Z]+[@#%.])", $str); 

только для букв и специальных символов в том же диапазоне символов, что и выше. Работал для меня. Для дальнейшего чтения и исследования вы можете перейти по адресу : http://gskinner.com/RegExr/

 /[\p{L}\p{P}]+/u 

соответствует буквам и пунктуационным символам. Или что вы имели в виду под «специальными символами»?

все символы не являются числом? как это сделать:

 /[^\d]*/ 

Используйте следующий код в .htaccess, чтобы заблокировать все URL-адреса с номером (согласно комментариям OP)

 Options +FollowSymlinks -MultiViews RewriteEngine on RewriteCond %{REQUEST_URI} ![0-9] RewriteRule ^user/ /index.php?goto=missed [NC,L]