PHP регулярное выражение заменяет пробел, если он следует за одной буквой - PullRequest
4 голосов
/ 19 января 2010

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

Например "this is a string" должно стать "this is a string",

"bla bla b l abla b la blabla" должно стать "bla bla b l abla b la blabla" ... и т.д ...

Ответы [ 4 ]

5 голосов
/ 19 января 2010
preg_replace('/(?<=\b[a-z]) /i', '&nbsp;', $s);

Регулярное выражение здесь выполняет положительный взгляд за , который гарантирует, что пробелу предшествует одна буква и граница слова.

2 голосов
/ 20 января 2010

без регулярных выражений

$str = "this is a string" ;
$s = explode(" ",$str);
foreach ($s as $i => $j){
    if (strlen($j)==1){
        $s[$i]="$j&nbsp;";
    }
}
print_r ( implode(" ",$s) );
0 голосов
/ 05 мая 2010

Чтобы сохранить пробелы и разрывы строк для текста, происходящего из базы данных:

<pre>
echo nl2br(str_replace(' ','&nbsp', stripslashes( database_string )));
<pre>
0 голосов
/ 19 января 2010
<?php

$str = 'your string';

$str = preg_replace(array('/ ([a-zA-Z]) /', '/^([a-zA-Z]) /', array(' $1&nbsp;', '$1&nbsp;'), $str);

?>

Должен сделать свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...