这似乎可行,使用 2 个正则表达式反向引用 $1 和 $2。
第一个在括号中定义$1的正则表达式表示:不是句点,不是空格 [SP, Tab, ...] 后跟任意数量的空格或没有空格。简而言之,整个正则表达式声明:“<”之前的最后一个SOLID - VISIBLE字符不是句点“.”。
$2是一个 HTML 标签,例如 b, p, li, strong, h1,...
无点测试:
$str = "<p>This is a good text, but it's
very tedious </p>";
preg_replace("/([^\.\s])[\s]*<\/([[:alnum:]]+)>/", "$1.</$2>", $str);
echo $str;
Gives:这是一篇很好的文章,但很乏味。
用点测试:
$str = "<p>This is a good text, but it's
very tedious. </p>";
preg_replace("/([^\.\s])[\s]*<\/([[:alnum:]]+)>/", "$1.</$2>", $str);
echo $str;
Gives:这是一篇很好的文章,但很乏味。
简化的正则表达式:
$str = preg_replace("/([a-z0-9])<\/p>/i", "$1.</p>", $str);
为任何以数字或 ASCII 字母结尾且没有句号的段落添加句号。HTML 标记,例如 P 或 p,在这里不区分大小写。