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

Как удалить все числа из строки?

Я хочу удалить все числа из строки [0-9]. Я написал этот код, который работает:

$words = preg_replace('/0/', '', $words ); // remove numbers
$words = preg_replace('/1/', '', $words ); // remove numbers
$words = preg_replace('/2/', '', $words ); // remove numbers
$words = preg_replace('/3/', '', $words ); // remove numbers
$words = preg_replace('/4/', '', $words ); // remove numbers
$words = preg_replace('/5/', '', $words ); // remove numbers
$words = preg_replace('/6/', '', $words ); // remove numbers
$words = preg_replace('/7/', '', $words ); // remove numbers
$words = preg_replace('/8/', '', $words ); // remove numbers
$words = preg_replace('/9/', '', $words ); // remove numbers

Я бы хотел найти более элегантное решение: 1 строковый код (важно писать хороший код IMO).

Другой код, который я нашел в stackoverflow, также удаляет диакритические символы (á, ñ, ž...).

4b9b3361

Ответ 1

Для номеров западного арабского (0-9):

$words = preg_replace('/[0-9]+/', '', $words);

Для всех цифр, включая западный арабский (например, Indian):

$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
  • \d+ соответствует нескольким цифрам.
  • Модификатор /u разрешает обработку строк в Юникоде. Этот модификатор важен, иначе цифры не совпадают.

Ответ 2

Попробуйте с регулярным выражением \d:

$words = preg_replace('/\d/', '', $words );

\d является эквивалентом для [0-9], который эквивалентен для чисел от 0 до 9.

Ответ 3

Используйте некоторое регулярное выражение, например [0-9] или \d:

$words = preg_replace('/\d+/', '', $words );

Возможно, вы захотите прочитать preg_replace() документацию, поскольку это прямо показано там.

Ответ 4

Regex

   $words = preg_replace('#[0-9 ]*#', '', $words);

Ответ 5

Использовать предопределенные диапазоны символов

echo $words= preg_replace('/[[:digit:]]/','', $words);