在PHP中如何用(·;)interpunt替换(.)点?
法语有一条排版规则,通过在字母之间添加(·)连音,以无性别的方式正确书写一些单词。 然而,我网站上的一些作者却输入了一个简单的(.)点 作为一个解决方案,我想创建一个函数来替换PHP字符串中由interpuncts放置在两个小写字母之间的每个点。但我的PHP技能相当有限……以下是我想要的: 替换此:在PHP中如何用(·;)interpunt替换(.)点?,php,typography,punctuation,Php,Typography,Punctuation,法语有一条排版规则,通过在字母之间添加(·)连音,以无性别的方式正确书写一些单词。 然而,我网站上的一些作者却输入了一个简单的(.)点 作为一个解决方案,我想创建一个函数来替换PHP字符串中由interpuncts放置在两个小写字母之间的每个点。但我的PHP技能相当有限……以下是我想要的: 替换此: $string=“T.N.T.:利弗鲁尔私人秘书长职位” 通过此: $string=“T.N.T.:Chargée des livreur·se·s.” 有人能帮我吗? 谢谢。如果您知道要替换的点的
$string=“T.N.T.:利弗鲁尔私人秘书长职位”
通过此:
$string=“T.N.T.:Chargée des livreur·se·s.”
有人能帮我吗?
谢谢。如果您知道要替换的点的语法规则,可以使用
str_replace()
。(例如,如果与é
和e
之间的所有内容有关,则可以执行以下操作:
$bodytag = str_replace("é.e", "é·e", $sourceText);
但是你总是会冒一些副作用的风险。例如,如果有一个首字母缩略词,你不想被这种模式取代。我认为没有任何神奇的方法可以避免这种情况
更具体地说
我想创建一个函数来替换PHP字符串中由interpuncts放置在两个小写字母之间的每个点
这可以通过preg_replace()
和适当的正则表达式来实现
请参见如果您知道围绕要替换的点的语法规则,则可以使用
str_replace()
(例如,如果与ee
和e
之间的所有内容有关,则可以执行以下操作:
$bodytag = str_replace("é.e", "é·e", $sourceText);
但是你总是会冒一些副作用的风险。例如,如果有一个首字母缩略词,你不想被这种模式取代。我认为没有任何神奇的方法可以避免这种情况
更具体地说
我想创建一个函数来替换PHP字符串中由interpuncts放置在两个小写字母之间的每个点
这可以通过preg_replace()
和适当的正则表达式来实现
请参见使用
preg_replace
with模式动态匹配3个组-两个小写字母(包括特殊的法语字母)和点之间,并使用替换中的第一个和第三个捕获组,以及INTERINCT:
$string = "T.N.T.: Chargé.e des livreur.se.s.";
$pattern = '/([a-zàâçéèêëîïôûùüÿñæœ])(\.)([a-zàâçéèêëîïôûùüÿñæœ])/';
$replacement = '$1·$3'; //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\u replace
的更多信息:
使用
preg_replace
with模式动态匹配3个组-两个小写字母(包括特殊的法语字母)和点之间,并使用替换中的第一个和第三个捕获组以及INTERINCT:
$string = "T.N.T.: Chargé.e des livreur.se.s.";
$pattern = '/([a-zàâçéèêëîïôûùüÿñæœ])(\.)([a-zàâçéèêëîïôûùüÿñæœ])/';
$replacement = '$1·$3'; //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\u replace
的更多信息: