strip_tags

Linker

Guest
strip_tags

Сам я не фанат этой функции, но тем не менее, не могу найти объяснения вот такого:

это пример на хостинге

Вот код страницы:

<?
$text = "";
$newtext = "";
if (isset($_POST['text']) && !empty($_POST['text']))
{
$text = $_POST['text'];
$newtext = strip_tags($_POST['text']);
}
?>

<html>
<head>
<title>What is this?</title>
</head>
<body bgcolor="#ffffff" text="#000066">
<center><br><br>
<h4><?= $newtext ?></h4>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST">
<textarea name="text" rows=7 cols=50><?= $text ?></textarea>
<br><br><input type="submit" name="go" value="введите текст с дефисами">
</form>
</center>
</body>
</html>

На хостинге FreeBSD PHP 4.3.1

В результате функция strip_tags() - "выкусывает" все дефисы из текста.

На локале под WinXP PHP 4.3.0 - всё нормально.

Вопрос такой: это может как-то быть связано с настройками хостера (PHP на днях обновили) ???
 

Yurik

/dev/null
Возможно как-то связано с этим топиком
http://phpclub.net/talk/showthread.php?s=&postid=208596
 

Linker

Guest
В bug reports нашёл один раз:

strip_tags removes hyphens - но речь о 4.3.2 + WinXP pro

Некоторые из bug reports на www.php.net содержат записи вида:
"It doesen't works! Help me please!"
Неужели позволительно отправлять такие "баг репорты" ?:)

Хостер говорит, что это вроде как официально признанный и уже "фиксенный" баг? Может я плохо искал?
 

Altex

Новичок
=========================
if (isset($_POST['text']) && !empty($_POST['text']))
---------------------------------------------
глупая проверка


=========================
If(!empty($_POST['text']))
---------------------------------------------
можно так - одно и тоже
 

Linker

Guest
Altex:

Не совсем по теме разговор, но коль уж речь о проверке...

Это совсем не одно и тоже, я проверяю существует ли переменная которая должна передаваться через POST из формы, а заодно, я проверяю введено ли что-нибудь в поле формы, это лишь тест, "на скорую руку" но если сделать так, как ты предлагаешь получится "Undefined" переменная, что намного глупее :)
 

Altex

Новичок
Глупее говорить то, чего никогда _не_ пробывал, а тем более говорить _не_ правильно. Но разговор действительно не об этом :)))))) Сорри за Оффтоп.
RTFM!!!

А вот почему дефисы изчезают - действительно впервые вижу такое.

P.S. Внёс разнообразие, блин. %)
 

dak

Guest
За такие сообщения в нормальных форумах от админов дают по шапке, и в нормальны форумах вообще подобное запрещено в правилах, а тут даже никто не прокомментировал, странно...

if (isset($_POST['text']) && !empty($_POST['text'])) -
глупая проверка;
If(!empty($_POST['text'])) -
можно так - одно и тоже
После этого поста, я бы на месте других пользователей вообще не стал бы прислушиваться к словам Altex-а, человек который дает такие советы в PHP обладает очень слабыми знаниями о том что советует.
 

Profic

just Profic (PHP5 BetaTeam)
2Linker:
2dak:
Можно полюбопытствовать: а вы вообще описание функции empty (которая является конструкией языка) читали?
Именно оттуда:
This is the opposite of (boolean) var, except that no warning is generated when the variable is not set. See converting to boolean for more information.
Для не понимающих на инглише вольный перевод:
Это инверсия (противоположность) (boolean) var, за исключением того, что не генерируется предупреждения, если переменная не определена. Подробнее смотрите в converting to boolean.

И из converting to boolean:
When converting to boolean, the following values are considered FALSE:
- ...
- the special type NULL (including unset variables)
Опять перевод :):
Когда (переменная) конвертируется в тип boolean, следующие значения принимаются за FALSE:
- ...
- специальный тип NULL (включая неопределенные переменные)

Из этих цитат следует:
1) !empty ($var) == !((boolean) @$var)
2) при проверке на !empty($var) проверять на isset($var) не обязательно.

Сорри за оффтоп :)
 

Linker

Guest
To Profic:

То, что не генерируется предупреждение и то, что переменная не определена совсем не одно и тоже !

Лучше подскажите мне со strip_tags() - это баг PHP или кривые настройки хостера?
А обработку форм оставим на усмотрение каждого в отдельности.

P.S. По теме вопроса: хостер уже поставил PHP 4.3.2 (! релиз от 16 мая !!!)
Но со strip_tags всё то же самое,

вот phpinfo
 

Profic

just Profic (PHP5 BetaTeam)
Блин, читать умеем? :)

Я в понедельник скачаю себе новый релиз и там погляжу.
Мне самому очень интересно :)
 

Profic

just Profic (PHP5 BetaTeam)
Просто вариант mi.kursknet.ru/info.php работает как нужно, но там 4.3.0RC2

В понедельник буду смотреть :)
 

Altex

Новичок
>>
>>if (isset($_POST['text']) &&
>>!empty($_POST['text'])) -
>>глупая проверка;
>>If(!empty($_POST['text'])) -
>>можно так - одно и тоже
>>
>>----------------------------------------
>>После этого поста, я бы на месте
>>других пользователей вообще не
>>стал бы прислушиваться к словам
>>Altex-а, человек который дает
>>такие советы в PHP обладает очень
>> слабыми знаниями о том что
>>советует.
>>
Думаю наш спор может разрешить только авторитетный человек, так как мы друг друга либо не понимаем, либо не хотим понимать.

Ибо если ты посмотришь по-внимательней - я не говорил, что *проверка_на_существование_нигде_нен_нужна* , а сказал то, что написано выше. А во то, что у кого-то видимо проблемы с русским (или английским), уже становится понятно. Специально для лентяев Profic уже сказал почти весь мануал по теме отпостил (и даже перевёл). Приношу свои извинения за непотемеписание.
 

Altex

Новичок
>>То, что не генерируется
>>предупреждение и то, что
>>переменная не определена совсем не
>>одно и тоже !

Вроде такой бред никто и не писал. Писали только вот это

(isset($var)&&!empty($var))==(!empty($var))
 

Altex

Новичок
strip_tags() у меня корректно обрабатывает дефисы. Может всё дело в том, как они собирали свой PHP?
 

sergo_stavropol

Guest
Linker, у меня то же самое - и я тоже на valuehost
неужели какая-то директива в пхп.ини?
 

Linker

Guest
sergo_stavropol, похоже, что всётаки это баг PHP, а вот насчёт настроек они намудрили с CURL и сокетами чего-то, если без strip_tags() - ещё жить можно, то вот без CURL и сокетов - не хотелось бы надолго остаться.

Они молодцы конечно, что PHP 4.3.2 RC3 нам поставили, но эксперименты будут проходить непосредственно на нас :)
 

sergo_stavropol

Guest
сокеты вроде работают - проблем с ними у меня не было
а то что они "молодцы", так это давно известно )))
 

Linker

Guest
Всё, хостер исправил что-то с дефисами, но что это было не говорит,
теперь всё работает как положено,
остались CURL и сокеты...
 

sergo_stavropol

Guest
а CURL глючит? я просто его не использую, но скоро понадобится
 
Сверху