Как я могу использовать PHP для выделения всех символов, которые не являются альфа-цифрами, числами, пробелами или прокруткой?
Я пробовал следующее, но это препинание.
preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
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);
Вам нужно будет явно указать пунктуацию, поскольку для этого нет сокращений (например, \s
– сокращенное обозначение пробелов).
preg_replace('/[^a-zA-Z0-9\s\-=+\|!@#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);
$str = trim($str); $str = trim($str, "\x00..\x1F"); $str = str_replace(array( ""","'","&","<",">"),' ',$str); $str = preg_replace('/[^0-9a-zA-Z-]/', ' ', $str); $str = preg_replace('/\s\s+/', ' ', $str); $str = trim($str); $str = preg_replace('/[ ]/', '-', $str);
Надеюсь это поможет.