Перейти к содержимому

Реферальная программа Мегаплана


Работа со строками

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 19 Май 2009 - 10:22

Создал тему, поскольку сейчас изучаю этот раздел PHP. Буду задавать вопросы, если что не будет получатся, надеюсь получать ответы =)

Пожалуй начну...
Учусь использовать функцию strcmp(). Самое простое понял, но вот пописать условие с ней - не могу. Пишет ошибку:

Parse error: syntax error, unexpected T_IS_IDENTICAL in Z:\home\localhost\www\admin\st.php on line 4

Пробовал заменять 1 на true - всеровно не хочет :P Сам код:
<?
$o = "Богдан";
$a = "Владимирович";
if (strcmp($a, $o)) == 1)  // если строка "а" больше строки "о" - выводит 1. Если 1=1 то выводдит Владимирович > Богдан
{echo "$a > $o"}
else
{echo "шото не так"};
?>

 

 

  • 0


#2 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 19 Май 2009 - 16:04

Потому что разница между строками не равна 1. Рекомендую в условии поставить
if (strcmp($a, $o)) > 0)  // если строка "а" больше строки "о" - выводит 1. Если 1=1 то выводдит Владимирович > Богдан
{echo "$a > $o"}
else
{echo "шото не так"};
Думаю. так будет правильнее.
  • 0

#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 19 Май 2009 - 22:52

Сенк. Я что-то сразу недодул =)
  • 0


#4 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 21 Май 2009 - 15:11

Как использовать функцию str_replace()? У меня в учебнике написан кой-то бред, типа:

Нам нужно заменить \n на <br>. Сделаем это так:

$str = str_replace("\n","<br>",$str);

Я ничего толком не понял, может кто-то укажет источник или боьясит на практике как его используют веб-мастера?
  • 0


#5 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 21 Май 2009 - 15:21

Есть ещё один вопрос :)
Например я хочу что бы в тексте заменило знак " на знак '. Пишу такой код:
<?php
$a = "Hello "world". How r u?"; // не катит :( из-за "
$s = strtr ($a,' " '," ' ");
echo $s;
?>
Как сделать что бы " читалось? Или в крайнем случае заменялось.

ps. Просто хочу написать скриптик, для подсчета символов с помощью strlen().
  • 0


#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Май 2009 - 18:35

Banderas, по поводу str_replace. У функции 4 параметра (последний необязательный)
mixed str_replace(mixed $search  , mixed $replace  , mixed $subject  [, int $&count  ] )
Функция возвращает данные различных типов - строка, массив.
$search - то что ищем в заданном параметре (строка, массив)
$replace - то на что заменяем каждое найденное $search (строка, массив)
$subject - то в чём ищем, строка или массив
$count - Начиная с PHP 5.0.0 количество произведенных замен может быть получено в необязательном аргументе count , который передается по ссылке. В версиях до PHP 5.0.0 этот аргумент недоступен.
Данная функция используется при заменах в строках или массивах, это очень удобно: Например BB-коды, шаблоны, ненужные символы.

Вот к примеру у тебя есть строка $str, в ней есть перенос строк, но его же HTML явно не понимает, а понимает тег <br>. Поэтому когда пользователь вводит в многострочное поле что-то на нескольких строках, браузеру присылается не строка с <br>, а строка с \n. Можно перед помещением в базу или файл сделать преобразование именно так как показано ниже:
$str = str_replace("\n","<br>",$str);

А вообще более точную информацию можно почитать про данную функцию здесь, да и примеров посмотреть

По поводу второго вопроса...
Запоминай, что подобные символы в строках нужно экранировать.
$a = "Hello \"world\". How r u?";

  • 0

#7 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Май 2009 - 15:44

2*ZiTosS* Спасибо!
Но мне надо будет что бы в переменную $a могли вводится любые символы без каких либо замен. Слышал есть функция которая выводит текст как он есть, она поможет?
  • 0


#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Май 2009 - 16:21

Banderas, Пойми, текст так и выводится как он есть, ты просто экранируешь спецсимволы. Даже когда ты берёшь какую-то переменную из базы у тебя автоматом идёт экранировка символов, которые могут помешать работе интерпретатора. Сам можешь проверить.
Выведи мою строку в браузер и ты увидишь не

Hello \"world\". How r u?

А

Hello "world". How r u?


  • 0

#9 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Май 2009 - 17:32

Нет. Ты не понял что я хотел сказать, или я не так сказал. Мне нужно что бы можно было вписать в переменную $a символы " ' * & ^ #. Конечно, я могу без проблем экранировать их слешем, но если текста на 1,5к символов? И если операция должна проводится автоматически?

Я думал сделать так, что бы данные посылались через форму и сразу проходили через str_replace() для замены, а потом сразу через strlen() и выводило количество символов. Но не знаю поможет ли... Не знаю как лучше профильтрировать текст из формы через " ' * & ^ # что бы не писать по 10 раз str_replace(). Может нужно написать функцию?
  • 0


#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Май 2009 - 17:44

Banderas, не пойму что тебе нужно. А вообще если ты внимательно читал мой пост. Параметрами функции str_replace могут быть массивы замен. Удобно и со вкусом :)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru