замена символа из середины слова строки - PullRequest
1 голос
/ 06 января 2011

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

Например ...

$string = "I am learn*ing *PHP today*";

Я хочу, чтобы эта строка была преобразована следующим образом.

$newString = "I am learn'ing *PHP today*";

Ответы [ 3 ]

3 голосов
/ 06 января 2011
$string = "I am learn*ing *PHP today*";
$newString = preg_replace('/(\w)\*(\w)/', '$1\'$2', $string);

// $newString = "I am learn'ing *PHP today* "

Соответствует звездочке, окруженной символами слова (буквы, цифры, подчеркивания).Если вы хотите использовать только буквы алфавита, вы можете сделать:

preg_replace('/([a-zA-Z])\*([a-zA-Z])/', '$1\'$2', 'I am learn*ing *PHP today*');
0 голосов
/ 06 января 2011

Заменить все вхождения звездочки в окружении буквы ....

$ string = preg_replace ('/ (\ w) * (\ w) /', '$ 1 \' $ 2 ', $ string);

И

Заменить все вхождения звездочки, где звездочка является начальным и конечным символом слова ....

$ string = preg_replace ('/ * (\ w +) * /', '\' $ 1 \ '', $ string);

0 голосов
/ 06 января 2011

Чтобы заменить только буквы алфавита, вам нужно использовать [a-z] в качестве диапазона символов и использовать флаг i, чтобы сделать регулярное выражение без учета регистра. Поскольку символ, который вы хотите заменить, является звездочкой, вам также необходимо экранировать его обратной косой чертой, потому что звездочка означает «соответствовать нулю или более раз» в регулярном выражении.

$newstring = preg_replace('/([a-z])\*([a-z])/i', "$1'$2", $string);
...