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