У меня есть переменная $ collector, которая может содержать от одного до семи имен людей, разделенных точкой с запятой. Если в строке содержится одно имя, за ней следуют семь точек с запятой, если в ней два имени, то 5 точек с запятой. Как я могу удалить лишние точки с запятой, которые находятся в конце строки, оставляя те, которые разделяют имена реальных людей на месте?
Примеры данных, хранящихся в $ коллекционерах
Джон Доу;;;;;;;
Джон Доу; Джейн Доу ;;;;;;
Джон Доу; Джейн Доу; Боб Смит ;;;;;
и т.п.
Если эти имена могут быть в каждой позиции в строке CSV, вы можете использовать preg_replace()
:
$strippedSemicolonStr = preg_replace('/;+/', ';', $str);
Помните, что с этим решением можно получить строку, заканчивающуюся ;
потому что он просто удаляет дубликаты точек с запятой.
Если все имена находятся в начале строки CSV (без пробелов), вы можете использовать rtrim()
:
$strippedSemicolonStr = rtrim($str, ';');
С этим решением вы потеряете все точки с запятой в конце строки. Таким образом, новая строка не заканчивается ;
,
Вы можете использовать функцию обрезки, найденную во многих языках, чтобы удалить указанные символы из начала и конца строк.
$string = 'John Doe;;;;;;;';
$string = trim ( $string, [";"] );