PHP: $str= '1,2,3,4,5,5,6,7,7,777,76'; $need = 777; $array = explode(',', $str); $size = sizeof($array); $minus = 0; for($i=0; $i<$size; $i++) { if($need == $array[$i]) { unset($array[$i]); $minus--; } else if($minus < 0) $array[$i+$minus] = $array[$i]; } $return = implode(',', $array); echo $return;
Работает, но немного криво. Так лучше: PHP: <?php $str= '1,2,3,4,5,5,6,7,7,777,76'; $need = 777; $array = explode(',', $str); $size = sizeof($array); $minus = 0; for($i=0; $i<$size; $i++) { if($need == $array[$i]) { unset($array[$i]); $minus--; } else if($minus < 0) { $array[$i+$minus] = $array[$i]; unset($array[$i]); } } $return = implode(',', $array); echo $return; ?> да я скрипт m0Hze тоже работает
SeNaP Вообще-то второй вариант не выведет никогда строку хелло. Переменная $a не может быть больше либо равна 1 и при этом выполнится !isset()
ну вы даёте > Есть таблица со строкой name. В ней находятся числа через запятую 1,5,54,234 и т.д. Как средствами php можно удалить число 54 из данной строки. m0Hze, кодом PHP: $return = str_replace($need.',','',$str); ты можешь удалить что надо + обрезать похожее на него, например в строке $str='1,2,3,12,13,23'; надо удалить $need='2'; В итоге будет 1,3,113,23 (откуда тут 113 оО? и почему вместо пяти чисел тут их четыре..) Ну и, как было замечено, число в конце строки не удаляет. WNZRS, ты вобще извращенец перевести строку в массив уже другая методика, но зачем перебирать массив и выравнивать ключи вручную, когда есть стандарные функции? зачем делать чтото типа $array[$i+$minus] = $array[$i]; , если после всех операций по удалению можно заюзать, например, array_values() и взять индексный массив (только зачем это надо, если implode() работает с ассоциативными массивами?) Можно исправить скрипт m0Hze, например, изменив так: было: PHP: $return = str_replace($need.',','',$str); стало: PHP: $return = substr(str_replace(','.$need.',',',',','.$str.','),1,-1); (но в учёт того, что я не знаю, как работает str_replace на низком уровне, а разбираться лень, то для гарантии того, что будут вырезаны ВСЕ требуемые числа, даже записанные подряд, можно использовать функцию два раза сразу) PHP: $return = substr(str_replace(','.$need.',',',',str_replace(','.$need.',',',',','.$str.',')),1,-1); (тут в кавычках 2 пробела сами появляются, их убить надо ) или PHP: $return = substr(str_replace(array(','.$need.',',','.$need.','),',',','.$str.','),1,-1);
А так можно? PHP: <?php $string = "1,5,154,32,123,132"; $need = "32"; echo preg_replace("#(^\d|\,|^)".$need."(\,|^|^\d)#",",",$string); ?>
да вы чё хоть... LStr1ke, не знаю, зачем ты полез в регулярки, это же всё медленнее работает. Но, если следовать твоим суждениям унифицировать алгоритм под любой разделитель, то проще написать в регулярках. Допустим. Даже не смотря на кривость того, что если разделитель будет не запятой, то при замене числа на его месте появится именно запятая Признаюсь, я плохо шарю в регулярках, поэтому, если это твой код, задам тебе вопрос: из твоей регулярки "#(^\d|\,|^)".$need."(\,|^|^\d)#" что означает |^ во второй скобке? т.е. неэкранированный символ ^ в начале выбора без дальнейших символов.. (в первой скобке такой вариант чудом помогает убить нужное число в начале строки ) в первых скобках у тебя ^\d для чего? возьми строку $string = "132,1,5,154,32,123,32"; и эта последовательность уничтожит 132 В конце строки число 32 твоим алгоритмом не убивается. На мой взгляд, регулярки надо использовать только тогда, когда без них никак (т.е. можно, но не выгодно ни по времени коддинга ни по производительности) Вобщем, вот мой вариант, где разделяющие символы - любые, кроме десятичных цифр, и заменено оно будет на левый разделитель от данного числа PHP: echo substr(preg_replace("/(\D)".intval($need)."(\D)/","\${1}",'®'.$string."\n"),1,-1); И опять же, функцию надо будет взять не один раз, т.к. строку $string = "1^5^154^32^32^123^132"; полностью от числел 32 она не очистит за 1 раз (либо править регулярку на подобные нонсенсы, либо брать функцию дважды, а то и трижды вобщем по циклу через while... но это если число более 3х раз подряд в строке, тут проще разбить на массив) так на строку $string = "32б1^5-154^32 32,32х32 32=32_32!32й123^132ы32"; нужно применить функцию 4 раза остался ещё вариант перебора строки по байтам, этого ещё ни кто не предложил хотя самый эффективный метод, имхо
существует алгоритм, который добавляет в переменную данные: после добавление всё это дело выводится через echo и получается следушая картина: а теперь вопрос как мне вывести только 1ую надпись?
привет! мне нужно сделать, чтобы когда человек заходил на страницу, отправлялся бы запрос на другой сервер, и действие на том сервере приосходило бы от его имени. например, в случае с ГЕТом, можно добавить ссылку на изображение вида "vk.com/change_settings.php?name=lol". можно как-то так же просто сделать это через ПОСТ, будет ли CURL работать в данном случае (ведь вроде как тогда запрос будет идти от сервера, а не от пользователя)?
Курл не пройдет. Обычный гет тоже не пройдет, везде нужны хеши. Надо иметь пассивную XSS и написать скрипт, который сам будет выдирать хеш, подставлять и делать запрос - все через пассивку.
там нету хэша, я не про контакт, просто для примера. есть вариант сделать флешку, впринципе просто, но слишком палевно
блин ты спрашиваеш про обыкновенное csrf здесьб почитай что умные люди пишут)))) http://www.inattack.ru/article/552.html
zavra, попробуй создай форму с экшном куда тебе нужно. И в событии onload страницы делай сабмит этой формы...
Копирование альбомов из группы В общем есть скрипт который копирует альбомы из группы вк. Проблема в том, что копирует он только первые 20 фотографий из каждого альбома. Помогите подправить чтобы копировал весь альбом. Вот ссылка на сам скрипт. http://slil.ru/29109993
Почему вот этот код в Ubuntu через php-cli выполняется нормально PHP: <?php set_time_limit(0); $file = file("basewebstream.txt"); $fp = fopen("result.txt","a"); function chek($exp){ global $expl; global $i; global $fp; global $s; $ch = curl_init("http://crackfor.me"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_USERAGENT, "Извените но я бот :)"); $headers = array ( 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8', 'Accept-Language: ru,en-us;q=0.7,en;q=0.3', 'Accept-Encoding: deflate', 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' ); curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); curl_setopt($ch, CURLOPT_POSTFIELDS, 'hash='.$exp.'&act=find'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); preg_match('#<b>(.*)</b>#iU',$result,$res[$i]); if(!preg_match("#-#i",$res[$i][1])){ print $expl[2].":".$res[$i][1]."\n"; print "Всего Гудов:".$s."\n"; $s++; fwrite($fp,$expl[2].":".$res[$i][1]."\n"); } curl_close($ch); } ///////////////////////////////////// $i = 0; $r = 0; $s = 1; foreach($file as $pass){ $expl = explode(":",$pass); $expl[2] = str_replace("\n","",$expl[2]); $expl[2] = str_replace("\r","",$expl[2]); $expl[2] = str_replace("\t","",$expl[2]); chek($expl[1]); $i++; } fclose($fp); ?> А в Windows7 через php-cli просто не хочет. Пробую запускаю Code: C:\Users\Senap\>php pars.php И возвращает Code: C:\Users\Senap\> И result.txt пустой то время как PHP: <?php echo "TEST CLI"; ?> Выодит TEST CLI Т.е. php-cli работает, а скрипт запускаться не чохет
SeNaP, а в Windows 7 в php расширение curl стоит/включено? и включен ли вывод ошибок в php.ini? (странно, что в таком случае нет ошибок даже)..
http://localhost/tes.php PHP: <?php $ch = curl_init('http://php.su'); curl_exec($ch); // выполняем запрос curl - обращаемся к сервера php.su curl_close($ch); ?> Работет. И ошибки тоже выводятся.