Местоположение
Турция, Стамбул, Стамбул

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (11)

Лучшие ответы пользователя

Все ответы (13)
  • Как блокировать и проверять забаненные ip? PHP?

    Согласен с другими комментаторами. Защиту нужно реализовывать не на php, а средствами сервера. Однако уж если совсем приспичило, то можно сделать что-нибудь а-ля vitalykim.ru/zashhita-ot-ddos-atak-na-php.html
    И реализовать вызов проверки на ddos в конструкторе MY_Controller и наследовать все контроллеры от него, или реализовать хук pre_controller.
    Ответ написан
    Комментировать
  • Какими условными операторами лучше воспользоваться если функция имеет 2 определенных сценария и третий сценарий по умолчанию?

    Лучше написать отдельные методы для каждой ситуации.
    // популярные книги
    function get_popular_books();
    // новые книги
    function get_new_books();
    // книги с дефолтными параметрами
    function get_books();

    и в зависимости от ситуации пользоваться необходимым.
    Ответ написан
    Комментировать
  • Как вывести текст из MySQL без непечатаемого пробела (& nbsp; )?

    Проблема возникает из-за того, что разбиение на страницы происходит для фиксированного количества символов.
    $text = substr($data['text'], $i*850, 850);
    Этот код не знает о том, что & nbsp; это один символ. Поэтому амперсанд оказывается на одной странице, а код nbsp; на другой.

    Чтобы решить проблему, придется усложнить алгоритм. Например, можно разбить текст на слова, и выводить на одной странице слова, сумма длин которых в сумме с количеством разделителей слов не превышает заданное у вас в коде число 850.

    Самое простейшее решение, разбить текст на слова с помощью explode(), более интеллектуальное решение можно реализовать, используя preg_split() и регулярные выражения.

    // формируем массив слов
    // считаем, что все слова разделены пробелом
    $words = explode(' ', $data['text'])
    // далее должен идти код, который определит
    // какие слова будут выведены на этой странице


    Таким образом, у вас не получится разделить символ & nbsp; и другие спецсимволы на две страницы. Надеюсь, что новый алгоритм разбиения вы сможете написать самостоятельно.

    P.S. А самое простое и грубое решение, избавиться вообще от источника проблемы:
    $data['text'] = html_entity_decode($data['text'], ENT_NOQUOTES);

    Документация здесь: www.php.su/functions/?html-entity-decode

    UPD. Набросал недостающий кусок кода. Не тестировал, но должно работать.

    <?php 
    while ($data = mysql_fetch_array($qr_result)) {
     $count_pages = ceil(strlen($data['text']) / 850);
    // разбиваем текст на слова
     $words = explode(' ', $data['text']);
    // начинаем вывод с первого слова
     $current_word_index = 0;
    // формируем текст страницы
    $page_text = '';
     while ($current_word_index < count($words)){
    	 // если длина текущего текста страницы
    	 // плюс пробел плюс следующее слово меньше 850
    	if (strlen($page_text . $words[$current_word_index] . ' ') <= 850){
    		// добавляем слово с пробелом к тексту
    		$page_text .= $words[$current_word_index] . ' ';
    		// переходим к следующему слову
    		$current_word_index++;
    	}
    	else{ // в противном случае выводим страницу
    	?>
    	<div>
    		<p><?=$page_text?></p>
    	</div>
    	<?	
    		// 
    		$page_text = '';
    	}
    	// если мы дошли до последнего слова, то выводим весь оставшийся текст
    	if ($current_word_index == count($words) - 1){
    		?>
    		<div>
    			<p><?=$page_text . ' ' . $words[$current_word_index]?></p>
    		</div>
    		<?
    	}
      }
    } ?>
    Ответ написан
    7 комментариев
  • Как объединить функции слайдера по таймеру и по клику?

    Проведите рефакторинг. Выделите одну функцию, которая будет отвечать за смену баннера. Передавайте этой функции необходимые для работы параметры. Вызывайте её в обоих случаях, и при смене по таймауту, и при смене по клику.
    Ответ написан
    5 комментариев
  • Как кроссбраузерно выровнить три фигуры на css по вертикали?

    Попробуйте вот так:
    jsfiddle.net/hHCP8
    Ответ написан
    Комментировать