У меня есть пользовательская строка (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>