Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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 - Fatal编程技术网

Php 在段落末尾添加句号

Php 在段落末尾添加句号,php,Php,我从一个用WYSIWYG编辑器创建的地方获取文本,因此它充满了html标记。(b,p,strong等) 我需要做的是,在剥离标记之前,确保每一行/图都以句号结束。如果有句号,请不要执行任何操作,但如果前面的字符不是句号,请添加一个句号 我试过: $str = ereg_replace("[A-Za-z0-9]</p>", ".</p>", $str ); 但这也去掉了句子中的最后一个字母(我理解它应该是这样的)。因此,end/p>变成了en./p>。有什

我从一个用WYSIWYG编辑器创建的地方获取文本,因此它充满了html标记。(
b
p
strong
等)

我需要做的是,在剥离标记之前,确保每一行/图都以句号结束。如果有句号,请不要执行任何操作,但如果

前面的字符不是句号,请添加一个句号

我试过:

$str = ereg_replace("[A-Za-z0-9]</p>", ".</p>", $str );

但这也去掉了句子中的最后一个字母(我理解它应该是这样的)。因此,
end/p>
变成了
en./p>
。有什么好方法可以实现我想要的吗?

使用2个regex backreferences$1和$2似乎可以实现


括号中定义$1的第一个正则表达式表示:不是一个句点,不是后跟任意数量空格或无空格的空格[SP,Tab,…]。简单地说,整个正则表达式声明:最后一个实体可见的字符前面的“使用负查找功能:

$str = preg_replace("/(?<!\.)&lt;\/p>/", "$1.&lt;\/p>", $str);
$str=preg\u replace(“/(?/”,“$1.\/p>”,$str);

ereg
已经被弃用多年了。你不应该在新代码中使用它。假装它从未存在过,然后切换到
preg
。另外,不要使用正则表达式来破坏html。你只会撕下你剩下的头发。改用它。如此真实……剩下的头发太少了!谢谢-这是一个梦想。尽管如此虽然我认为你的第一个版本应该在这里,以防有人需要。$str=preg_replace(“/([A-Za-z0-9])/”,“$1.

”,$str);在任何以数字或字母结尾且没有句号的段落中添加句号。是的,这已经修复。
$str = "<p>This is a good text, but it's
very tedious.   </p>";
preg_replace("/([^\.\s])[\s]*<\/([[:alnum:]]+)>/", "$1.</$2>", $str);
echo $str;
$str = preg_replace("/([a-z0-9])<\/p>/i", "$1.</p>", $str);
$str = preg_replace("/(?<!\.)&lt;\/p>/", "$1.&lt;\/p>", $str);