php 重置路径符号,在php中添加/修复标点符号

我正在慢慢改进PHP中的标点修复功能,用于清理用户输入.该函数当前在标点符号后添加空格,在标点符号之前删除空格,并将每个句子的第一个单词大写.我见过一些人正在寻找类似的功能,所以我很乐意分享到目前为止我所拥有的功能.它非常接近我想要它的位置,但是,当它在逗号后添加一个空格时,它应该避免这样做,当逗号在一个数字内,例如1,000时,任何人都可以建议最快的方法来修改我的代码以忽略数字中的逗号?也许有办法缩短我所拥有但仍然达到相同的结果?谢谢你的时间…

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;

}

解决方法:

这是我更新的PHP修复标点符号功能…它现在似乎正常工作.我确信有一些方法可以压缩它,但它可以对字符串进行以下操作…

减少重复的标点符号,如!!至 !

将多个空间减少到单个空格

之前删除任何空格? . ,

之后添加空格; :

在逗号后添加空格,但在它们是数字的一部分时不添加

在句点之后添加空格,但不是在它们是数字或缩写的一部分时添加

从字符串的开头和结尾删除空格

大写句子的第一个词

如果是逗号,请将最后一个字符更改为句点

function format_punc($string){

$punctuation = ';:';

$spaced_punc = array(' ?', ' .', ' ,');

$un_spaced_punc = array('?', '.', ',');

$string = preg_replace("/([.,!?;:])+/iS","$1",$string);

$string = preg_replace('/[[:space:]]+/', ' ', $string);

$string = str_replace($spaced_punc, $un_spaced_punc, $string);

$string = preg_replace('/(['.$punctuation.'])[\s]*/', '\1 ', $string);

$string = preg_replace('/(?

$string = preg_replace('/(\.)([[:alpha:]]{2,})/', '$1 $2', $string);

$string = trim($string);

$string = preg_replace('/([\.!\?]\s+|\A)(\w)/e', '"$1" . strtoupper("$2")', $string);

if($string[strlen($string)-1]==','){

$string = substr($string, 0, -1).'.';

}

return $string;

}

如果您花时间来压缩此代码并创建仍然返回相同结果的内容,请分享!谢谢你,享受!

标签:punctuation,php

来源: https://codeday.me/bug/20190901/1786261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值