Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Убрать из строки лишние
 
 автор: pautina   (23.02.2012 в 15:24)   письмо автору
 
 

Здравствуйте ни подскажете как из строки удалить лишнее.
мне нужно удалить <p>&nbsp;</p> либо на пробел, или чтобы вместо этого участка строки вообще ничего не было.
Для этого использую скрипт

<?php   

 header
('Content-type: text/plain; charset=utf-8'); 
 
 
$str '<p>&nbsp;</p>
<p><strong>Финальное изображение:</strong></p>
<p>&nbsp;</p>
<p align="center"><img src="/images/lessons/les1661/1.jpg" 
alt="" width="450" height="623" /></p>
<p>&nbsp;</p>
<p>Дополнительные материалы можете скачать 
<a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/TUTORIAL%205%20KERVIN.zip">
здесь</a> .<br /><strong><em>Примечание:</em></strong><em> в некоторых 
шагах автор не указал настройки, которые использовал для 
корректирующих слоёв, стилей слоя поэтому, вам придётся 
поэкспериментировать с настройками.</em></p>
<p>&nbsp;</p>
<p><strong>Шаг 1. </strong>Откройте в Photoshop файл 
 <strong>illus.psd, </strong>который находится в скачанном 
архиве. Этот файл имеет три базовых слоя: "linework", 
"ground", and "figure". Сделайте неактивным слой "ground", 
пока мы с ним работать не будем.</p>'

     
     
$str str_replace('<p>&nbsp;</p>',"\n"$str);      

 echo 
'<pre>';  
 
print_r($str);
  
?>

При выполнении между закрывающимся тегом </p> и открывающимся <p> остаётся пустая строка, как сделать чтобы этой пустой строки не было.\n

  Ответить  
 
 автор: Slo_Nik   (23.02.2012 в 15:51)   письмо автору
 
   для: pautina   (23.02.2012 в 15:24)
 

1) Зачем так растягивать сообщение? подредактировать не судьба?

2) не "\n", а просто "" или " "

  Ответить  
 
 автор: pautina   (23.02.2012 в 15:59)   письмо автору
 
   для: Slo_Nik   (23.02.2012 в 15:51)
 

В результате выполнения скрипта

<p><strong>Финальное изображение:</strong></p>

<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>

<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/

В строке есть пустые строки как избавиться от них?

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 00:32)   письмо автору
 
   для: pautina   (23.02.2012 в 15:59)
 

а с чего Вы взяли, что это пустые строки?
может просто надо задать margin:0 для параграфа?

  Ответить  
 
 автор: pautina   (24.02.2012 в 06:01)   письмо автору
 
   для: Slo_Nik   (24.02.2012 в 00:32)
 

мне нужно править сам код, не затрагивая стили,
как здесь сделать чтобы вместо
</p>

<p ...> 

была не пустая строка а
</p>
<p ...> 

чтобы в итоге код строки был не
<p><strong>Финальное изображение:</strong></p>

<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>

<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/

а

p><strong>Финальное изображение:</strong></p>
<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>
<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 12:20)   письмо автору
 
   для: pautina   (24.02.2012 в 06:01)
 

у Вас в стилях что записано для <p> ?
Вы пробовали сделать margin:0 для <p> ?
По умолчанию для параграфа margin-top и margin-bottom имеют значения больше "0" и это даёт такой эффект как в Вашем примере....

  Ответить  
 
 автор: pautina   (24.02.2012 в 12:27)   письмо автору
 
   для: Slo_Nik   (24.02.2012 в 12:20)
 

я этот код буду вставлять потом в таблицу БД. мне нужно чтобы по коду не было пустой строки.

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 12:29)   письмо автору
 
   для: pautina   (24.02.2012 в 12:27)
 

У Вас там нет пустой строки, а просто значения margin Вас вводят в заблуждение,,,

  Ответить  
 
 автор: pautina   (24.02.2012 в 12:31)   письмо автору
 
   для: Slo_Nik   (24.02.2012 в 12:29)
 

Да мне не нужен ни margin ни pagging средствами php для кода можно прописывать любые условия.
Мне нужно найти такой способ чтоб в строке не было пустых строк. (Этот код вставляется в запись таблицы БД и там не должно быть пустых строк)

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 12:43)   письмо автору
 
   для: pautina   (24.02.2012 в 12:31)
 

Вы пробовали задать margin:0?
Посмотрите на свой код через firebug в Mozilla, наведите в нём курсор на любой Ваш параграф и увидите полосу жёлтого цвета сверху и снизу... это и будет margin.
Вот когда его уберёте, расстояние между параграфами сократится

  Ответить  
 
 автор: ZetRider   (24.02.2012 в 13:18)   письмо автору
 
   для: pautina   (23.02.2012 в 15:24)
 


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php

$str 
'
Текст
<p>&nbsp;</p>
еще текст <p>&nbsp;</p> текст текст
текст
пробелы   
 
  
  
  
текст
'
;
      
$str str_replace('<p>&nbsp;</p>',''$str);

print_r($str); // получаем - Текст еще текст текст текст текст пробелы текст

?>
 


попробуйте в базу данные записать...

  Ответить  
 
 автор: pautina   (24.02.2012 в 13:34)   письмо автору
 
   для: ZetRider   (24.02.2012 в 13:18)
 

Как мне в этом скрипте

<?php    

 header
('Content-type: text/plain; charset=utf-8');  
  
 
$str '<p>&nbsp;</p> 
<p><strong>Финальное изображение:</strong></p> 
<p>&nbsp;</p> 
<p align="center"><img src="/images/lessons/les1661/1.jpg" 
alt="" width="450" height="623" /></p> 
<p>&nbsp;</p> 
<p>Дополнительные материалы можете скачать <a 
href="http://digitalartsonline.s3.amazonaws.com/DASEP11/
TUTORIAL%205%20KERVIN.zip">здесь</a> .<br /><strong><em>Примечание:</em></strong><em> в некоторых 
шагах автор не указал настройки, которые использовал для 
корректирующих слоёв, стилей слоя поэтому, вам придётся 
поэкспериментировать с настройками.</em></p> 
<p>&nbsp;</p> 
<p><strong>Шаг 1. </strong>Откройте в Photoshop файл  
<strong>illus.psd, </strong>который находится в скачанном 
архиве. Этот файл имеет три базовых слоя: "linework", 
"ground", and "figure". Сделайте неактивным слой "ground", 
пока мы с ним работать не будем.</p>'
;  
      
     
$str str_replace('<p>&nbsp;</p>',''$str); 

print_r($str); // получаем - Текст еще текст текст текст 
текст пробелы текст 

?>
 
 

Сделать чтоб не было пустых строк
сейчас в результате выполнения скрипта на выходе получаем
<p><strong>Финальное изображение:</strong></p>

<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>

<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/TUTORIAL%205%20KERVIN.zip">здесь</a> .<br /><strong><em>Примечание:</em></strong><em> в некоторых шагах автор не указал настройки, которые использовал для корректирующих слоёв, стилей слоя поэтому, вам придётся поэкспериментировать с настройками.</em></p>

<p><strong>Шаг 1. </strong>Откройте в Photoshop файл <strong>illus.psd, </strong>который находится в скачанном архиве. Этот файл имеет три базовых слоя: "linework", "ground", and "figure". Сделайте неактивным слой "ground", пока мы с ним работать не будем.</p>


Как мне избавиться от пустых строк чтоб на выходе получить
<p><strong>Финальное изображение:</strong></p>
<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>
<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/TUTORIAL%205%20KERVIN.zip">здесь</a> .<br /><strong><em>Примечание:</em></strong><em> в некоторых шагах автор не указал настройки, которые использовал для корректирующих слоёв, стилей слоя поэтому, вам придётся поэкспериментировать с настройками.</em></p>
<p><strong>Шаг 1. </strong>Откройте в Photoshop файл <strong>illus.psd, </strong>который находится в скачанном архиве. Этот файл имеет три базовых слоя: "linework", "ground", and "figure". Сделайте неактивным слой "ground", пока мы с ним работать не будем.</p>

То что с пустыми строками в таблицу БД записывается неправильно.
может как то можно склеить </p>...<p...> или условие какое задать

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 14:42)   письмо автору
 
   для: pautina   (24.02.2012 в 13:34)
 

Эффект даёт совойство css margin-top и margin-bottom,
которые по умолчанию для <p> не равны "0" !!!
Пишите к базу как есть, а вот при выводе из базы будете обрабатывать, править css ....

[поправлено модератором]

  Ответить  
 
 автор: pautina   (24.02.2012 в 14:50)   письмо автору
 
   для: Slo_Nik   (24.02.2012 в 14:42)
 

Мне нужно чтобы запись в таблицу БД шла так как если бы её создавали в админке.
Я и сам знаю что в таблицу это запишится и стилями css можно это обработать.
То что для параграфа по умолчанию стоят свои отступы это тоже понятно.
Я вам уже несколько раз и сам говорю что мне нужно
ИЗБАВИТЬСЯ ОТ ПУСТЫХ СТРОК
Это необходимо для правильной записи матриала в cms

[поправлено модератором]

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 14:52)   письмо автору
 
   для: pautina   (24.02.2012 в 14:50)
 

Тогда убирайте полностью параграфы, в которых нет текста или есть &nbsp;

  Ответить  
 
 автор: Slo_Nik   (24.02.2012 в 14:50)   письмо автору
49.6 Кб
 
   для: pautina   (24.02.2012 в 13:34)
 

вот скрин , смотрите....

[поправлено модератором]

  Ответить  
 
 автор: pautina   (24.02.2012 в 14:54)   письмо автору
 
   для: Slo_Nik   (24.02.2012 в 14:50)
 

Да мне нужно найти способ, средствами php сделать так чтобы в строке содержащей html код между
</p>

<p>
не было пустой строки
для этого нужно или регулярное выражение или условие какое записывать.
вы говорите полностью параграфы убрать
<p>&nbsp;</p>
какую функцию для этого нужно использовать?

  Ответить  
 
 автор: cheops   (24.02.2012 в 15:00)   письмо автору
 
   для: pautina   (24.02.2012 в 14:54)
 

Ну а в чем проблема-то, давайте, регулярным выражением удалим
<?php
  $text 
"Да мне нужно найти способ,
  средствами php сделать так чтобы в
  строке содержащей html код между 
  </p>

  <p>
  не было пустой строки 
  для этого нужно или регулярное
  выражение или условие какое записывать."
;
  
$pattern "|</p>\s+<p>|is";
  
$replace "</p><p>";
  
$text preg_replace($pattern$replace$text);
  echo 
htmlspecialchars($text);
?>
PS Этот ответ появился позже, так как из первого сообщения не понял что нужно, из-за отвлекающего объемного кода. Лучше, где можно, вот так сообщения и формировать. Моментально ответ получите, так как эта задача не выглядит "пугающей" :))), перечитал сейчас первый пост, в этом дело и было, но как увидел огромный листинг, тут же тему со страху закрыл, думал разбираться долго нужно что и как :))).

  Ответить  
 
 автор: pautina   (24.02.2012 в 15:09)   письмо автору
 
   для: cheops   (24.02.2012 в 15:00)
 

- Нужно удилить строку которая содержит такой код
<p>&nbsp;</p>
если встречается эта строка, то её полностью удаляем.
Как это можно описать?
- Или от вашего регулярного выражения отталкиваться но менять нужно

</p> 
<p>&nbsp;</p> 
<p align="center">

или

</p> 
<p>&nbsp;</p> 
<p>

  Ответить  
 
 автор: cheops   (24.02.2012 в 15:15)   письмо автору
 
   для: pautina   (24.02.2012 в 15:09)
 

Самое просто, это в два этапа произвести замену, сначала убрать при помощи str_replace() все строки "<p>&nbsp;</p>", а потом применить регулярное выражение.

  Ответить  
 
 автор: pautina   (24.02.2012 в 15:18)   письмо автору
 
   для: cheops   (24.02.2012 в 15:15)
 

Как подкорректировать?

<?php    

 header
('Content-type: text/plain; charset=utf-8');  
  
 
$str '<p>&nbsp;</p> 
<p><strong>Финальное изображение:</strong></p> 
<p>&nbsp;</p> 
<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p> 
<p>&nbsp;</p> 
<p>Дополнительные материалы можете скачать <a href="http://digitalartsonline.s3.amazonaws.com/DASEP11/TUTORIAL%205%20KERVIN.zip">здесь</a> .<br /><strong><em>Примечание:</em></strong><em> в некоторых шагах автор не указал настройки, которые использовал для корректирующих слоёв, стилей слоя поэтому, вам придётся поэкспериментировать с настройками.</em></p> 
<p>&nbsp;</p> 
<p><strong>Шаг 1. </strong>Откройте в Photoshop файл  <strong>illus.psd, </strong>который находится в скачанном архиве. Этот файл имеет три базовых слоя: "linework", "ground", and "figure". Сделайте неактивным слой "ground", пока мы с ним работать не будем.</p>'
;  
      
     
$str str_replace('<p>&nbsp;</p>',''$str); 
     
$pattern "|</p>\s+<p>|is"
     
$replace "</p><p>";
     
$str preg_replace($pattern$replace$str); 
     
//echo htmlspecialchars($str);

print_r($str); // получаем - Текст еще текст текст текст текст пробелы текст 

?>

здесь $pattern = "|</p>\s+<p>|is"; меняем не только
</p>

<p>
но и
</p>

<p align="center">
и как записать что после закрывающегося тега должен быть преход строки

  Ответить  
 
 автор: cheops   (24.02.2012 в 17:07)   письмо автору
 
   для: pautina   (24.02.2012 в 15:18)
 

Вот этот блок
     $pattern = "|</p>\s+<p>|is";  
     $replace = "</p><p>";

замените следующим
     $pattern = "|</p>\s+<p|is";  
     $replace = "</p><p";

  Ответить  
 
 автор: pautina   (24.02.2012 в 17:19)   письмо автору
 
   для: cheops   (24.02.2012 в 17:07)
 

А как мне после закрывающегося тега параграфа сделать переход строки?
$str = str_replace('</p>','</p>"/n"', $str);  

Так что то не идёт?

  Ответить  
 
 автор: cheops   (24.02.2012 в 17:21)   письмо автору
 
   для: pautina   (24.02.2012 в 17:19)
 

А зачем двойные кавычки вокруг /n и почему /n, а не \n?

  Ответить  
 
 автор: pautina   (24.02.2012 в 17:24)   письмо автору
 
   для: cheops   (24.02.2012 в 17:21)
 

смотрите и так не идёт
$str = str_replace('</p>','</p>\n', $str);   

Как переход строки правильно описать?

  Ответить  
 
 автор: cheops   (24.02.2012 в 17:42)   письмо автору
 
   для: pautina   (24.02.2012 в 17:24)
 

А что происходит? Вообще в Windows перевод строки \r\n. В браузере вы его, конечно, не увидите, так как там для этого используется специальный тэг <br /> - возможно вы его имеете в виду?

  Ответить  
 
 автор: pautina   (24.02.2012 в 17:47)   письмо автору
 
   для: cheops   (24.02.2012 в 17:42)
 

В результате выполнения скрипта в браузере выходит html код в 1 строку без переходов строки
<p><strong>Финальное изображение:</strong></p>\r\n<p align="center"><img src="/images/lessons/les1661/1.jpg" alt="" width="450" height="623" /></p>\r\n ...

Здесь

$str = str_replace('</p>','</p>\r\n', $str);   

(возможно это и правильный код,
если вместо '</p>\r\n' использовать '</p>любой английский символ-ы' то в браузере выводится
<p><strong>Финальное изображение:</strong></p>любой английский символ-ы ...,
для <br /> то же самое,)

нужно правильно описать переход строки для '</p>\r\n', чтобы его можно было увидеть в браузере?

  Ответить  
 
 автор: cheops   (24.02.2012 в 18:05)   письмо автору
 
   для: pautina   (24.02.2012 в 17:47)
 

>нужно правильно описать переход строки для '</p>\r\n', чтобы его можно было увидеть в браузере?
Увидеть где, в исходном коде или прямо в браузере, т.е. вы хотите показать этот перевод пользователю?

  Ответить  
 
 автор: pautina   (24.02.2012 в 18:38)   письмо автору
 
   для: cheops   (24.02.2012 в 18:05)
 

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

  Ответить  
 
 автор: cheops   (24.02.2012 в 19:18)   письмо автору
 
   для: pautina   (24.02.2012 в 17:47)
 

Попробуйте одиночные кавычки заменить двойными.

  Ответить  
 
 автор: pautina   (24.02.2012 в 19:23)   письмо автору
 
   для: cheops   (24.02.2012 в 19:18)
 

Да все довольно просто
$str = str_replace('</p>',"</p>\r\n", $str);  

По синтаксису как правильно писать в 2-х местах двойные кавычки или как в выше указано

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования