powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Расстановка неразрывных пробелов
21 сообщений из 21, страница 1 из 1
Расстановка неразрывных пробелов
    #39178273
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Есть необходимость расстановки неразрывных пробелов средствами PHP в тексте из формы. Как это делается? Может есть готовые решения? Поисковики всё про Ворд…
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39178307
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
str_replace подойдёт?
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39178419
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это что, на каждый случай 50 раз эту функцию вызывать? Пробовал strtr(), но после второго использования на том же тексте все   куда-то испаряются. Кстати почему?
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39178539
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЭто что, на каждый случай 50 раз эту функцию вызывать? Пробовал strtr(), но после второго использования на том же тексте все   куда-то испаряются. Кстати почему?
покажите как делаете. видимо неправильно
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39178545
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только начал, это набросок:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
$nerazr_probel = array(

	' И ' => ' И ',
	' и ' => ' и ',
	
	' К ' => ' К ',
	' к ' => ' к ',
	' К ' => ' К ',
	' к ' => ' к ',
	
	' О ' => ' О ',
	' о ' => ' о ',
	
	' С ' => ' С ',
	' с ' => ' с ',
	
	' В ' => ' В ',
	' в ' => ' в ',
	
	' т. п.' => ' т. п.'
	
);

$bd_ops = strtr($bd_ops, $nerazr_probel);
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179264
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

Ну а что не так получается?
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179304
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleandrejk,

Ну а что не так получается?

После первой проходки по тексту всё нормально, а после второй неразрывные пробелы исчезают и больше не появляются.
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179310
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПосле первой проходки по тексту всё нормально, а после второй неразрывные пробелы исчезают и больше не появляются.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
$ cat ./t.php
<?php
$str = "Слово к слову и за слово. И пошел в баню. К великим открытиям и т. д. и т. п.";
$nerazr_probel = array(
    ' И ' => ' И&nbsp;',
    ' и ' => ' и&#160;',
    ' К ' => ' К&nbsp;',
    ' к ' => ' к&#160;',
    '&nbsp;К ' => '&nbsp;К&nbsp;',
    '&nbsp;к ' => '&nbsp;к&nbsp;',
    ' О ' => ' О&nbsp;',
    ' о ' => ' о&nbsp;',
    ' С ' => ' С&nbsp;',
    ' с ' => ' с&nbsp;',
    ' В ' => ' В&nbsp;',
    ' в ' => ' в&nbsp;',
    ' т. п.' => ' т.&nbsp;п.'
);

$str1 = strtr($str, $nerazr_probel);
$str2 = strtr($str1, $nerazr_probel);
echo $str, "\n", $str1, "\n", $str2, "\n";

$ php ./t.php
Слово к слову и за слово. И пошел в баню. К великим открытиям и т. д. и т. п.
Слово к&#160;слову и&#160;за слово. И&nbsp;пошел в&nbsp;баню. К&nbsp;великим открытиям и&#160;т. д. и&#160;т. п.
Слово к&#160;слову и&#160;за слово. И&nbsp;пошел в&nbsp;баню. К&nbsp;великим открытиям и&#160;т. д. и&#160;т. п.
$

Где исчезают?

PS: ' т. п.' в данном тесте не ловится, но это другой вопрос.
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179401
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замкнутый круг при правке текста между формой и бд при промежуточном сохранении:

форма -> типограф -> бд (код пробела в тексте есть, прямо в тексте) -> форма (код пробела в тексте есть, не в форме, а в коде страницы) -> типограф -> бд (всё, кода пробела нет) -> форма (кода нет) ->… (кода нет)
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179431
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База то таких вольностей себе не позволяет, её исключить можно, скорее всего. Не вполне понятны действия с формой. Есть предложение сделать предельно простой тестовый пример, иллюстрирующий проблему.
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179735
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleНе вполне понятны действия с формой.

Речь о перезагрузке страницы с формой с сохранением в базу данных текущего состояния текста в форме и выводе сохранённого текста снова в форму для дальнейшей правки. Над примером подумаю, может сам код выложу лучше даже…
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179768
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
include ('../php/nerazr_probel.php');

$bd_zgl = trim($_POST["zgl"]);
$bd_zgl = preg_replace("/ {2,}/", " ", $bd_zgl);
$bd_zgl = strtr($bd_zgl, $nerazr_probel);//пропустили через типограф

mysql_query("  
UPDATE LOW_PRIORITY `stt`
SET `zgl`='".$bd_zgl."'
WHERE…
");//записали в бд (код пробела в тексте есть, прямо в тексте)

mysql_query("  
SELECT `zgl`FROM `stt` WHERE …
");//взяли из бд в форму (код пробела в тексте есть, не в форме, а в коде страницы)

…

include ('../php/nerazr_probel.php');

$bd_zgl = trim($_POST["zgl"]);
$bd_zgl = preg_replace("/ {2,}/", " ", $bd_zgl);
$bd_zgl = strtr($bd_zgl, $nerazr_probel);//пропустили через типограф

mysql_query("  
UPDATE LOW_PRIORITY `stt`
SET `zgl`='".$bd_zgl."'
WHERE…
");//записали в бд (всё, кода пробела нет) 

mysql_query("  
SELECT `zgl`FROM `stt` WHERE …
");//взяли из бд в форму (кода нет)

…(кода нет)
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179883
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
HTML Entities выведенные в поля формы (input, textarea) браузер при отправке формы превратит в настоящие символы - & amp ; в амперсанд, & quot ; - в кавычки, & lt ; & gt ; - в знаки меньше больше, а & nbsp ; - в символ неразрывного пробела (с кодом 160).
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39179902
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?HTML Entities выведенные в поля формы (input, textarea) браузер при отправке формы превратит в настоящие символы - & amp ; в амперсанд, & quot ; - в кавычки, & lt ; & gt ; - в знаки меньше больше, а & nbsp ; - в символ неразрывного пробела (с кодом 160).

Тогда почему после первой отправки я в бд вижу сам код символа, а не символ? А после второй отправки всё пропадает?
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180218
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

Поглядите, что отправляется сервером в html-код формы и что приходит с этой формы обратно на сервер. Подозреваю, что в каком-то месте надо символ & заменить на его сущность
Код: php
1.
&amp;
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180379
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вардампом смотрел, но он просто текста показывает. Как посмотреть с кодами?
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180407
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В хтмл-коде страницы смотрите
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180542
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в коде и смотрю, код неразрывного пробела именно в коде страницы изчезает.
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180574
Прогоняйте текст через эту функцию на этапе вывода страницы (не в форму редактирования, а уже посетителям сайта), а не перед записью в БД. Так вы сможете заодно и дополнять её впоследствии без изменения данных в базе.
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180668
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, попробую, но тогда текст будет зависим от функции, а хочется всё носить с собой, мало-ли что…
...
Рейтинг: 0 / 0
Расстановка неразрывных пробелов
    #39180704
Подозреваю, что если случится "мало-ли что", то неразрывные пробелы будут наименьшей проблемой сайта.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Расстановка неразрывных пробелов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]