filter — Удаление лишних точек с запятой из строки в переполнении стека

У меня есть переменная $ collector, которая может содержать от одного до семи имен людей, разделенных точкой с запятой. Если в строке содержится одно имя, за ней следуют семь точек с запятой, если в ней два имени, то 5 точек с запятой. Как я могу удалить лишние точки с запятой, которые находятся в конце строки, оставляя те, которые разделяют имена реальных людей на месте?

Примеры данных, хранящихся в $ коллекционерах
Джон Доу;;;;;;;
Джон Доу; Джейн Доу ;;;;;;
Джон Доу; Джейн Доу; Боб Смит ;;;;;
и т.п.

0

Решение

Если эти имена могут быть в каждой позиции в строке CSV, вы можете использовать preg_replace():

$strippedSemicolonStr = preg_replace('/;+/', ';', $str);

Помните, что с этим решением можно получить строку, заканчивающуюся ; потому что он просто удаляет дубликаты точек с запятой.

Если все имена находятся в начале строки CSV (без пробелов), вы можете использовать rtrim():

$strippedSemicolonStr = rtrim($str, ';');

С этим решением вы потеряете все точки с запятой в конце строки. Таким образом, новая строка не заканчивается ;,

3

Другие решения

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

$string = 'John Doe;;;;;;;';
$string = trim ( $string, [";"] );

http://php.net/manual/de/function.trim.php

0

По вопросам рекламы [email protected]