Как удалить все числа из строки?
Я хочу удалить все числа из строки [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, также удаляет диакритические символы (á, ñ, ž...).
Ответы
Ответ 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);