Я хотел бы удалить все числа из строки [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, также удаляет Diacritics (á, ñ, ž …).
Для номеров западного арабского (0-9):
$words = preg_replace('/[0-9]+/', '', $words);
Для всех цифр, включая западный арабский (например, индийский ):
$words = '१३३७'; $words = preg_replace('/\d+/u', '', $words); var_dump($words); // string(0) ""
\d+
соответствует нескольким цифрам. /u
разрешает обработку строк в Юникоде. Этот модификатор важен, иначе цифры не совпадают. Попробуйте с regex \d
:
$words = preg_replace('/\d/', '', $words );
\d
является эквивалентом для [0-9]
который эквивалентен для чисел от 0
до 9
.
Используйте некоторое регулярное выражение, например [0-9]
или \d
:
$words = preg_replace('/\d+/', '', $words );
Возможно, вам захочется прочитать документацию preg_replace (), поскольку это прямо показано там.
Regex
$words = preg_replace('#[0-9 ]*#', '', $words);
Использовать предопределенные диапазоны символов
echo $words= preg_replace('/[[:digit:]]/','', $words);