У меня есть пользовательская строка (html-форматированная строка, которую нужно сохранить и использовать в Интернете), и вам нужно найти способ заменить каждое пустое пространство, которое находится сразу после одной буквы на
,
Например, "this is a string"
должна стать "this is a string"
,
"bla bla bl abla b la blabla"
должно стать "bla bla b l abla b la blabla"
… и т. д. …
preg_replace('/(?<=\b[az]) /i', ' ', $s);
Регулярное выражение здесь выполняет положительный lookbehind, который гарантирует, что пробелу предшествует одна буква и граница слова.
без регулярного выражения
$str = "this is a string" ; $s = explode(" ",$str); foreach ($s as $i => $j){ if (strlen($j)==1){ $s[$i]="$j "; } } print_r ( implode(" ",$s) );
<?php $str = 'your string'; $str = preg_replace(array('/ ([a-zA-Z]) /', '/^([a-zA-Z]) /', array(' $1 ', '$1 '), $str); ?>
Должен сделать трюк.
Чтобы сохранить пробелы и разрывы строк для текста, исходящего из базы данных:
<pre> echo nl2br(str_replace(' ',' ', stripslashes( database_string ))); <pre>