Intereting Posts
считать новые строки в textarea для изменения размера контейнера в PHP? Как вы включаете несколько страниц в один файл с включенным php? PHP (или что-то еще) CGI-конфигурация в web.config IIS Создать файл в каталоге идентификатора пользователя Добавление и доступ к идентификаторам кнопок в таблице, сгенерированной PHP Добавить ошибку в элемент формы Symfony 2 Вставьте в одну таблицу, обновив другую и загрузив файл Добавьте два часа к дате в течение заданных часов, которые переносятся на следующий таймфрейм curl posting с приложением заголовка / x-www-form-urlencoded Вызов свойства переменной напрямую vs getter / seters – OOP Design Как я могу добавить BCC при отправке электронной почты из Open Cart? Доступ к Symfony / web / config.php с другого адреса, чем localhost? PHP XML: Недопустимое смещение, но оно в массиве? Как создать процедуру, которая выполняет аналогичную работу с моей php-функцией (ускорение оптимизации) Граничный поиск (solr) vs Хорошая старая фильтрация через PHP?

php – взорвать строку в. но игнорировать десятичные числа, например 2.9

В настоящее время я взорву строку . и он работает, как мне нравится. единственная проблема – это также взрывается, когда . происходит как десятичная точка. Есть ли способ исключить decimal точки из функции взрыва?

Моя текущая настройка: как вы видите, она взрывается . между двумя числами

 $String = "This is a string.It will split at the previous point and the next one.Here 7.9 is a number"; $NewString = explode('.', $String); print_r($NewString); output Array ( [0] => This is a string [1] => It will split at the previous point and the next one [2] => Here 7 [3] => 9 is a number ) 

Related of "php – взорвать строку в. но игнорировать десятичные числа, например 2.9"

Вы можете использовать preg_split для этого с регулярным выражением /(?<!\d)\.(?!\d)/ :

 <?php $String = "This is a string. It will split at the previous point and the next one. Here 7.9 is a number"; $NewString = preg_split('/(?<!\d)\.(?!\d)/', $String); print_r($NewString); ?> 

Выход :

 Array ( [0] => This is a string [1] => It will split at the previous point and the next one [2] => Here 7.9 is a number ) 

DEMO

Что означает регулярное выражение?

  • (?<!\d) – «отрицательный lookbehind» означает, что он будет соответствовать только если нет цифры ( \d ) перед точкой
  • \. – буквальный . персонаж. Его нужно избегать . в regex означает «любой символ»,
  • (?!\d) – «отрицательный взгляд», означающий, что он будет соответствовать только если нет цифры ( \d ) после точки

Дополнительно:

Вы можете избавиться от пробелов, используя регулярное выражение как /(?<!\d)\.(?!\d)\s*/ , которое также будет соответствовать любому количеству белых пробелов после точки, или, альтернативно, вы можете используйте $NewString = array_map('trim', $NewString); ,

Если вам нужно взорвать текст, как в вашем примере, простой способ сделать это – взорвать «.» Вместо «.».

 $String = "This is a string. It will split at the previous point and the next one. Here 7.9 is a number"; $NewString = explode('. ', $String); print_r($NewString); output Array ( [0] => This is a string [1] => It will split at the previous point and the next one [2] => Here 7.9 is a number )