Intereting Posts
XMLReader & simpleXML Combo, с условиями PDO с несколькими именованными заполнителями не извлекает данные Загрузка через JQuery AJAX Сообщение не работает Обновление кэша Magento при сохранении плагина Как предотвратить повторное заполнение формы при обновлении страницы (F5 / CTRL + R) Перемещение вверх / вниз элемента в массиве по его значению Редактирование загруженных пользователем файлов? Поделитесь СЕССИЕЙ на нескольких серверах с разными доменами php как разбить URL-адрес алгоритм для преобразования md5 (или, может быть, другой метод хэширования?) в целое число, где можно установить возможные результирующие целые диапазоны (например: 1-10000)? Текстовое поле Обязательное На основании выбора переключателя-Yii2 Получить титул веб-сайта по ссылке Нужно ли перезапускать Apache после изменения файла php.ini? Вставить в mysql, используя форму php / html – не работает Библиотека аннотаций PHP

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

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