Как заменить (.) Точки на (·) элементы в PHP? - PullRequest
1 голос
/ 26 февраля 2020

Существует французское типографское правило c для правильного написания некоторых слов без учета пола, путем добавления (·) символа между буквами. Однако некоторые авторы на моем веб-сайте вместо этого набирают простую (.) Точку.

В качестве решения я хотел бы создать функцию для замены в PHP строках каждой точки, расположенной между двумя строчными буквами письма по поручениям. Но мои PHP навыки довольно ограничены ... Вот что я ищу:

ЗАМЕНА ЭТОГО :

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

ПО ЭТОМУ :

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

Может ли кто-нибудь помочь мне, пожалуйста? Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2020

Используйте шаблон preg_replace с шаблоном для динамического сопоставления 3 групп - двух строчных букв (включая специальные французские буквы) и точки между ними, а также используйте вместо первой первую и третью захваченные группы вместе с intepunct:

$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_replace:

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

0 голосов
/ 26 февраля 2020

Вы можете использовать str_replace(), если знаете правила грамматики, окружающие точки, которые вы хотите заменить. (например, если все, что находится между é и e, то вы можете сделать:

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

Но вы всегда будете рисковать некоторыми побочными эффектами. Например, если есть аббревиатура, которую вы не Я не думаю, что есть какой-то волшебный c способ избежать этого.

Более конкретно

Я хотел бы создать функция для замены в PHP строках каждой точки, которые помещаются между двумя строчными буквами через точки.

Это может быть достигнуто с помощью preg_replace() и соответствующего REGEX

См. этот пост

...