Тогда добавляем проверку, по средствам file_exists: PHP: function transliterate($st) { //Функция транслитерации слова $st = strtr($st, "абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ", "abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE" ); $st = strtr($st, array( 'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>'', 'ь'=>'', 'ю'=>"yu", 'я'=>"ya", 'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>'', 'Ь'=>'', 'Ю'=>"Yu", 'Я'=>"Ya", )); return $st; } $textarea = "Я тут был"; //Тут долежн быть контент $byw = explode(" ",$textarea); //Разбиваем по словам foreach ($byw as $ow) { //Разбираем массив $f_name = transliterate($ow); //Транслируем слово для названия файла $f_cur = $f_name.".txt"; if (file_exists($f_cur)) { echo "Файл $f_cur существует<br>"; //Тут он говорит, о том что файл уже есть, можно удалить строку, елси не надо } else { $f_new = fopen($f_cur, "w"); fwrite($f_new, $ow); fclose($f_new); } }
Всем ку, PHP: $file =$_GET['th']; $arr = array('1', '2', '3', '4', '5', '6' ....); if (!in_array($file,$arr)) $file = $arr[0]; include ("tm". $file .".txt"); Вопрос 1-ый, с точки зрения с безопасностью норм? А второй, в маccиве arr должно быть с 1 до 70, просто перечислить цифры - глупо, наверно это как-то можно сделать через цикл? Заранее спасибо.
PHP: $file =$_GET['th']; if(!is_numeric($file) or !isset($_GET['th']) or $file < 1 or $file > 70) { $file = 1; } include ("tm". $file .".txt");
Классно А можно этот код минимизировать, чтоб он был очень маленький? Пока знаю что можно удалить HTML: function transliterate($st) { //Функция транслитерации слова $st = strtr($st, "абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ", "abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE" ); $st = strtr($st, array( 'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>'', 'ь'=>'', 'ю'=>"yu", 'я'=>"ya", 'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Shch", 'Ъ'=>'', 'Ь'=>'', 'Ю'=>"Yu", 'Я'=>"Ya", )); return $st; } оставив только HTML: function transliterate($st) { //Функция транслитерации слова return $st; } и будет почти все тоже самое, изменится только название файлов. Код также не фильтрует запятые, точки, вопросы и вписывает все это в текст. Потом еще я немного доработал предыдущий код, он позволяет не встраивать file_exists: нужно всего то строку заменить так HTML: $f_new = fopen($f_name.".php", "c+"); //Ну и далее, записываем все в файлы
Dr.Money, какие ошибки? В начале скрипта ( перед подключением файла с классом ) напиши: PHP: error_reporting( E_ALL ); ini_set( "display_errors", "on" ); Отпишись, что будет на выходе.
upd: прошло немного времени и опять не работает: Notice: Undefined offset: 1 in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 71 Warning: fopen(%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87.txt): failed to open stream: Permission denied in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 23 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 24 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 25 yandex.php test.php
проверка включенного изображения можно ли проверить через php включено ли изображение в браузере ? такой код не работает: PHP: <?php @session_start(); if ($_SESSION['use_images'] == 1) { echo 'Изображения включены'; } else { echo 'Изображения отключены'; } ?>
Насколько я знаю, можно определить по средствам JS, например: Code: function testGraphics() { if (document.tImage.width==100) alert ("Картинки включены"); else alert ("Картинки отключены"); } <img src="test.gif" alt="Image" name="tImage"> //В теле Есть еще ряд способов, если погуглить, например по средствам onLoad.
на js эта проверка работает лучше но если учесть что js отключен может быть, из за этого хотелось сделать на php
NOJS, так же можно детектить. Лично я, альтернатив на php, к сожалению не знаю, да и в гугле ничего не нашлось.
PHP пишет, что проблема в попытке записи (метод save). Еще пишет, что регуляркой в $title[1] ничего не зацепилось. Как вариант: 1. Разобраться с правами на запись в папку (сохранять в файл вида "%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87.txt", впрочем, как-то странно). 2. Закомментировать 75 строку, т.к. все равно в test.php все пользователю в браузер отдается.
PHP: $result = array(); $punctuation = array( ':' => 'colon', ',' => 'comma', '-' => 'dash', '?' => 'question', ); preg_match_all('/(\w+)?(\W)\s?/ims', 'where, is: your - mind?', $r); foreach($r[1] as $key=>$word){ $result[] = $word; if(is_array($r[2]) && !empty($r[2][$key]) && array_key_exists($r[2][$key], $punctuation)) $result[] = $punctuation[$r[2][$key]]; } print_R($result);
подскажите пожалуйста универсальное решение которое оставит только первый символ из строки, все остальные символы заменит вот такое мне нужно на выходе: antichat -> a....... ant -> a.. a -> a
PHP: <? $string = "antichat"; for($i = 1;$i<=strlen($string)-1;$i++) { $string[$i] = "."; } echo $string; ?>
Kruzak Если я правильно понял, относительно символов замены, то выглядеть это может примерно так: PHP: $str = 'antichat'; //Тут твоя строка $frs_s = $str{0}; //Определеяем первый символ $s_count = (strlen($str) -1) ; //Определяем оставшееся кол-во символов $rep = str_repeat(".", $s_count); // Повторяем определенное (в $s_count) кол-во точек echo ($frs_s), ($rep); //Выводим результат UPD Вот, даже два варианта тебе написали. Используй лучше код qaz, он оптимальней, а у меня можешь погуглить используемые функций для понимания. UPD2 Три
PHP: <?php $array = array('antichat', 'ant', 'a'); array_walk($array, 'cut_string'); function cut_string(&$s) { $s = str_pad($s{0}, strlen($s), '.'); } var_dump($array); ?>