如何将PHP中的(.)点换成(·)号?

How to replace (.) dots by (·) interpuncts in PHP?

有一条法语排版规则可以通过在字母之间添加 (·) 标号来以无性别的方式正确书写一些单词。 然而,我网站上的一些作者正在输入一个简单的 (.) 点。

作为一个解决方案,我想创建一个函数来替换 PHP 字符串中的每个点,这些点被插入两个小写字母之间。但是我的 PHP 技能相当有限……这就是我要找的东西:

替换这个

$string = "T.N.T.: Chargé.e des livreur.se.s."

由此:

$string = "T.N.T.: Chargé·e des livreur·se·s."

有人可以帮我吗? 谢谢。

如果您知道围绕要替换的点的语法规则,则可以使用 str_replace()。 (例如,如果涉及 ée 之间的所有内容,那么您可以这样做:

$bodytag = str_replace("é.e", "é·e", $sourceText);

但是您总是会冒一些副作用的风险。例如,如果有首字母缩略词,您不想用这种模式替换。我不认为有任何神奇的方法可以避免这种情况。

更具体地说

I'd like to create a function to replace in PHP strings each dots which are placed between two lowercase letters by interpuncts.

这可以通过 preg_replace() 和适当的 REGEX

来实现

this post

使用preg_replacewith模式动态匹配3组-两个小写字母(包括特殊的法语字母)和点之间,并使用第一个和第三个捕获的组替换,连同intepunct:

$string = "T.N.T.: Chargé.e des livreur.se.s.";
$pattern = '/([a-zàâçéèêëîïôûùüÿñæœ])(\.)([a-zàâçéèêëîïôûùüÿñæœ])/';
$replacement = '·'; //captured first and third group, and interpunct in the middle 

//results in "T.N.T.: Chargé·e des livreur·se·s."
$string_replaced = preg_replace($pattern, $replacement, $string); 

关于 preg_replace 的更多信息:

https://www.php.net/manual/en/function.preg-replace.php