Регулярное выражение неразрывного пробела в php - PullRequest
1 голос
/ 29 января 2010

ввод:

$string = "a b c  d   e"; 

У меня есть строка в php, и мне нужно заменить строку на код без пробелов

выход:

"a \xc2\xa0b c \xc2\xa0d \xc2\xa0\xc2\xa0e"
  1. одиночный пробел и первый пробел нельзя заменять на \ xc2 \ xa0
  2. когда появляются два пробела "", выводом является "\ xc2 \ xa0", первый пробел сохраняется, а второй пробел заменяется.
  3. когда появляются три пробела "", выводится "\ xc2 \ xa0 \ xc2 \ xa0", первый пробел сохраняется, а второй и третий пробел заменяется.
  4. случайная строка ввода

Любая идея с регулярным выражением или другой функцией php Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 29 января 2010
preg_replace('/(?<= ) {1,2}/', "\xc2\xa0", $str);

Lookbehind (?<= ) видит, предшествует ли пробелу совпадение, {1,2} соответствует 1 и 2 пробелам. Замена будет происходить только с соответствующими пробелами, а не с задним взглядом. Если вы хотите заменить как можно больше пробелов (если их больше 3), просто замените {1,2} на +.

1 голос
/ 29 января 2010
$s = preg_replace('~(?<= ) ~', '\xc2\xa0', $s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...