如何将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_replace
with模式动态匹配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
的更多信息:
有一条法语排版规则可以通过在字母之间添加 (·) 标号来以无性别的方式正确书写一些单词。 然而,我网站上的一些作者正在输入一个简单的 (.) 点。
作为一个解决方案,我想创建一个函数来替换 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_replace
with模式动态匹配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
的更多信息: