Я медленно совершенствую функцию исправления пунктуации в PHP, которая используется для очистки пользовательского ввода. В настоящее время функция добавляет пробелы после знаков препинания, удаляет пробелы перед знаками препинания и делает первое слово каждого предложения заглавным. Я видел, как несколько человек искали аналогичную функцию, поэтому я рад поделиться тем, что у меня есть. Это довольно близко к тому, где я этого хочу, однако, когда он добавляет пробел после запятой, этого следует избегать, когда запятая находится внутри числа, такого как 1000. Может ли кто-нибудь предложить самый быстрый способ изменить мой код, чтобы игнорировать запятые внутри чисел ? Может быть, есть способы сократить то, что у меня есть, но при этом достичь того же результата? Спасибо за ваше время...
function format_punc($string){
$punctuation = ',.;:';
$string = str_replace(' ?', '?', str_replace(' .', '.', str_replace(' ,', ',', preg_replace('/(['.$punctuation.'])[\s]*/', '\1 ', $string))));
$string = trim(preg_replace('/[[:space:]]+/', ' ', preg_replace('/([\.!\?]\s+|\A)(\w)/e', '"$1" . strtoupper("$2")', $string)));
if($string[strlen($string)-1]==','){
$string = substr($string, 0, -1).'.';
}
return $string;
}