Я хотел бы удалить все числа из строки [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);