Подтвердить что ты не робот

Регулярное выражение: галочка без буквенной или пунктуации

Как я могу использовать PHP для выделения всех символов, которые не являются альфа-цифрами, числами, пробелами или прокруткой?

Я пробовал следующее, но это препинание.

preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
4b9b3361

Ответ 1

preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $str);

Пример:

php > echo preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", "⟺f✆oo☃. ba⟗r!");
foo. bar!

\p{P} соответствует всем символам пунктуации Unicode (см. Unicode свойства символа). Если вы только хотите разрешить определенную пунктуацию, просто добавьте их в класс отрицательных символов. Например:

preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);

Ответ 2

Вам нужно будет явно указать пунктуацию, так как для этого нет сокращений (например, \s является сокращением символов пробела).

preg_replace('/[^a-zA-Z0-9\s\-=+\|[email protected]#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);

Ответ 3

$str = trim($str);
$str = trim($str, "\x00..\x1F");
$str = str_replace(array( "&quot;","&#039;","&amp;","&lt;","&gt;"),' ',$str);
$str = preg_replace('/[^0-9a-zA-Z-]/', ' ', $str);
$str = preg_replace('/\s\s+/', ' ', $str); 
$str = trim($str);
$str = preg_replace('/[ ]/', '-', $str);

Надеюсь, что это поможет.