Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果下一个字符是空格或大写字母字符,则PHP按点分解字符串_Php_String_Explode - Fatal编程技术网

如果下一个字符是空格或大写字母字符,则PHP按点分解字符串

如果下一个字符是空格或大写字母字符,则PHP按点分解字符串,php,string,explode,Php,String,Explode,我有一段话是这样的: Lorem Ipsum只是(不是1.2%)打印和排版的虚拟文本 工业y。Lorem Ipsum一直是业界标准的虚拟文本 从16世纪开始,当一个不知名的印刷商在一个厨房里打印 把它搅乱做成一个样本book。我不仅活了下来 五个世纪,也是电子排版的飞跃, 基本上保持不变。I在20世纪60年代流行起来 我想把它用法典中的一个点“代码> > 来分割,但是只有当这个点在一个短语的末尾,而不是在中间(如 1.2%代码>)时,当它有一个大写< /代码>字符时(也可能是一个空白)。例如,如

我有一段话是这样的:

Lorem Ipsum只是(不是1.2%)打印和排版的虚拟文本 工业y。Lorem Ipsum一直是业界标准的虚拟文本 从16世纪开始,当一个不知名的印刷商在一个厨房里打印 把它搅乱做成一个样本book。我不仅活了下来 五个世纪,也是电子排版的飞跃, 基本上保持不变。I在20世纪60年代流行起来

我想把它用法典中的一个点“代码> > <代码>来分割,但是只有当这个点在一个短语的末尾,而不是在中间(如<代码> 1.2%代码>)时,当它有一个<代码>大写< /代码>字符时(也可能是一个空白)。例如,如果我使用:

$arr = explode('.', $paragraph);
每次出现
,它都会拆分该段落


有没有一种快速而干净的方法来实现这一点?如果是,有人能帮我理解吗?

使用正则表达式匹配大写字符或空格之前的点,并根据正则表达式匹配来分割字符串

$arr = preg_split("/\.\s?(?=[A-Z])/", $paragraph);
检查使用
preg\u split('/\.[\s |$]/',$input\u行)中的结果

这将在点和空格或新行上拆分



不应该只是
$arr=explode(“.”,$paragration)工作?(在点后添加空格)。然而,它可能会导致语法错误的文本,因为一个段落可以由多个句子组成。自动纠正可能需要某种人工智能或广泛的规则引擎想法。这是迄今为止最简单的。由于目标是从段落中提取句子,而不管“停止/句号”,这是实现目标的最简单、最快捷的方法。正则表达式可能更高效,运行速度更快(可能在很长的段落中很明显),但就“高尔夫代码”而言,这一个对我来说太快了,但我正要回答
/\。\s?(?=[A-Z])/
。@Kaddath你说得对,这会导致从第一个项目中删除额外的空间项目1中有一个新行。谢谢谢谢谢谢谢谢D它工作得很好@emma Yes还删除了新行Explode。。。如果下一个字符是空格或大写,但您没有注意它。同时,您的代码也与最后一个点匹配string@Mohammad不管是否有大写字符。OP认为正确的方法并不总是正确的。去读一读关于方轮的书。嗨@Andreas,谢谢你花时间来帮助我。我真的很感激,但我已经使用了你之前的评论答案和穆罕默德的答案:(