Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Расстановка неразрывных пробелов / 21 сообщений из 21, страница 1 из 1
25.02.2016, 03:18
    #39178273
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
Здравствуйте.
Есть необходимость расстановки неразрывных пробелов средствами PHP в тексте из формы. Как это делается? Может есть готовые решения? Поисковики всё про Ворд…
...
Рейтинг: 0 / 0
25.02.2016, 07:36
    #39178307
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
str_replace подойдёт?
...
Рейтинг: 0 / 0
25.02.2016, 10:36
    #39178419
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
Это что, на каждый случай 50 раз эту функцию вызывать? Пробовал strtr(), но после второго использования на том же тексте все   куда-то испаряются. Кстати почему?
...
Рейтинг: 0 / 0
25.02.2016, 11:38
    #39178539
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
andrejkЭто что, на каждый случай 50 раз эту функцию вызывать? Пробовал strtr(), но после второго использования на том же тексте все   куда-то испаряются. Кстати почему?
покажите как делаете. видимо неправильно
...
Рейтинг: 0 / 0
25.02.2016, 11:43
    #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
25.02.2016, 19:07
    #39179264
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
andrejk,

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

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

После первой проходки по тексту всё нормально, а после второй неразрывные пробелы исчезают и больше не появляются.
...
Рейтинг: 0 / 0
25.02.2016, 20:55
    #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
25.02.2016, 23:38
    #39179401
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
Замкнутый круг при правке текста между формой и бд при промежуточном сохранении:

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

Речь о перезагрузке страницы с формой с сохранением в базу данных текущего состояния текста в форме и выводе сохранённого текста снова в форму для дальнейшей правки. Над примером подумаю, может сам код выложу лучше даже…
...
Рейтинг: 0 / 0
26.02.2016, 13:22
    #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
26.02.2016, 14:45
    #39179883
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
HTML Entities выведенные в поля формы (input, textarea) браузер при отправке формы превратит в настоящие символы - & amp ; в амперсанд, & quot ; - в кавычки, & lt ; & gt ; - в знаки меньше больше, а & nbsp ; - в символ неразрывного пробела (с кодом 160).
...
Рейтинг: 0 / 0
26.02.2016, 15:02
    #39179902
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Расстановка неразрывных пробелов
?HTML Entities выведенные в поля формы (input, textarea) браузер при отправке формы превратит в настоящие символы - & amp ; в амперсанд, & quot ; - в кавычки, & lt ; & gt ; - в знаки меньше больше, а & nbsp ; - в символ неразрывного пробела (с кодом 160).

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

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


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