PHP: вопросы и ответы

Незнайка

Старожил
Все проблемы решил с помощью функции nl2br(), всё работает как было задумано. Осталось написать админку.
Спасибо всем за быстрые ответы и грамотные советы.

Если интересно посмотреть, то пока вставил в новости BMW. Там 5 страрых новостей в базе было, вот на них и тренируюсь.

ЗЫ: если кого-то интересуют новые новости :), то это только на сайте в глобалке.
 

n0ip

Старожил
2Незнайка
можно еще так:

Код:
str_replace(chr(10), '<br>', $row['post']);
 

A4

Старожил
Нужна помощь по регулярным выражениям.
Суть - заменить определенную последовательность символов (несколько совпадений), расположенную между двумя другими символами на новую.
Практически - есть html-код со списками вида
Заголовок списка :
Код:
<br>&nbsp;&nbsp;&nbsp;&nbsp;элемент;
<br>&nbsp;&nbsp;&nbsp;&nbsp;элемент;
<br>&nbsp;&nbsp;&nbsp;&nbsp;элемент;
.
надо брэйк с пробелами поменять на li. желательно ещё вставить ul после двоеточия и закрыть его после точки :)
 

kenZZZo

Старожил
как-то так
Код:
<?php
$string = "
Заголовок списка:
<br>&nbsp;&nbsp;&nbsp;&nbsp;элемент 1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;element 2;
<br>&nbsp;&nbsp;&nbsp;&nbsp;element 
97;
<br>&nbsp;&nbsp;&nbsp;&nbsp;последний элемент.
";

//после двоеточия ставим <ul> и заодно преобразуем первую строчку 
//([\S\s]*?;) - значит любое количество любых символов (включая перевод строки, например) до первого вхождения ';'
$string = preg_replace(
"/(:
)<br>&nbsp;&nbsp;&nbsp;&nbsp;([\S\s]*?;)/",

"$1<ul>
<li>$2",

$string
);

//преобразуем остальные строки
$string = preg_replace(
"/<br>&nbsp;&nbsp;&nbsp;&nbsp;([\S\s]*?;)/",

"<li>$1",

$string
);

//преобразуем последнюю строку, которая заканчивается точкой и ставим после неё </ul>
$string = preg_replace(
"/<br>&nbsp;&nbsp;&nbsp;&nbsp;([\S\s]*?\.)/",

"<li>$1
</ul>",

$string
);
?>
на выходе получаем:
Код:
Заголовок списка:
<ul>
<li>элемент 1;
<li>element 2;
<li>element 
97;
<li>последний элемент.
</ul>
как-то не лаконично получилось
но это всё, на что способна моя тяжёлая голова сейчас (:)

-----------

нда, косяк, если эти "<br>&nbsp;&nbsp;&nbsp;&nbsp;" есть в тексте (не только в списках) - он их тоже поменяет =(
 

11

Старожил
Сделал страничку для оформления заказа. для передачи между страницами использую сесии. в локале все было нормально, а при переносе на хостинг на странице появилась ошибка:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /www/z220net/www/htdocs/calc/calc/zakaz.php:1) in /www/z220net/www/htdocs/calc/calc/zakaz.php on line 2

в строке 2 следующий текст:

<?php
session_start();
session_register('message', 'birth');
?>

что это такое и как с этим бороться?
 

misha19

Старожил
парни что мне править что бы русским письмена в форуме русскими были ?
Я уже в админ панеле 1251 поставил, и по разному там писал, cp1251 как тока не писал, напишите плиз поможите ))
вот пациент httP://10.7.24.10
 

Кекс

Старожил
Скрипт ищет слово ($findme) в тексте ($text). Если находит, выполняется одна функция, если нет — другая.
Код:
$check = strpos($text, $findme);

if ($check === true)
{
// bla-bla
}
else
{
// bla-bla 2
}
Вопрос. На localhoste работает как надо. На удаленном хосте в любом случае выполняется вторая функция.
Как решать?
 

Majik13

Старожил
а зачем три "равно"?
не поверишь, с двумя нормально работает :)
 

Кекс

Старожил
Действительно, с 2 "равно" все пашет, спасибо :)

Кстати, а что вообще означает 3 "равно"?
 

Кекс

Старожил
Значит я чего-то напутал/опечатался/неправильно копипастнул. Самого удивило :)
 

Кекс

Старожил
$text — это текст из поля формы, который скрипту отправляется.
 

ReQ

Старожил
Кекс":3oie0g12 сказал(а):
$text — это текст из поля формы, который скрипту отправляется.
как он отправляется? методом GET или POST ? В любом случае, напиши в начале скрипта $text = $_GET['text'];
и так же со второй переменной. Если метод - post, то исправь на $text = $_POST['text'];
 

Кекс

Старожил
Отправка POST-ом.
Сделал $text = $_POST['text']; — то же самое :(
И опять-таки, на localhost работает всегда и правильно.

Кстати, сама переменная $text ведет себя нормально на обоих серверах, и другие условия, например
Код:
if (!$text)
{
// bla-bla
}
Почему же только на удаленном хосте не пашет именно поиск?

И это, что такое "==="? :wink:
 

Nonick

Старожил
Про === можно почитать тут.

Условие if(!$text) выполняется если $text = false (0) или $text не инициализированно ( но при этом выкидывает ошибку).

Так что конкретно не работает?
 
Верх