Если строка в двойных ковычках, то в твоем случае даже не надо смотреть сочетание сивмолов \x, PHP сразу понимает, что эт один символ.. PHP: <?php $str='фвафіаafdjasdjfowej\x1e\x10s\\\asdf%&**()'; echo"$str<br>"; for($i=0;$i<=strlen($str);) { if($str[$i+1]=="x" && $str[$i]=="\\"){ echo substr($str,$i,4)."<br>"; $i+=4; }else{ echo"$str[$i]<br>"; $i++; } } ?>
У меня проблема в регулярных выражениях не могу сообразить как сделать чтобы все ячейки написанные ниже были помещены в массив В HTML таблице есть ячейки вида: Code: <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td> <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td> <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td> <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td> <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td> Там везде не просто везде News написано, а разная информация, естественно с буквами, цифрами, слэшами, пробелами, ентерами т.е выход делать регулярное выражение с тегами, а как именно сделать это регулярное выражение проблема , пробовал просто без помощи тегов делать не выходит. Нужно чтобы только такого вида ячейки были помещены в массив. Делаю так: $exp = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a><font color=(.*?)>(.*?)<\/font><\/center><\/td>/'; preg_match_all($exp, $str, $preg); Пробовал и по другому составлять $exp но так и не додумался ( В массив $preg заносятся только первая и последняя ячейки А нужно чтобы каждая ячейка так как она распаложена шла и в массив ... Т.е вариант типо сначало сделать $exp занести в массив потом сделать Code: $exp_2 = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a><\/center><\/td>/'; Занести в массив отпадает надо чтобы поочереди всё было Помогите разобраться плз как сделать Вроде как и пустиковое то дело, а мне совсем непонятно .
Эм еси у тебя только первая и последняя, то прочитай внимательно про preg_match_all и его 4 парметром !
Code: <?php $data="<td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a><font color=black>news</font></center></td> <td><center>news<br><a href='http://news.com/news/11/' class='news_11'><b>News</b></a></center></td>"; $exp = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a>(.*?)<\/center><\/td>/'; preg_match_all($exp,$data,$math); print_r($math[0]); ?> Вот как всё решилось благодаря grinay! СПАСИБО ОГРОМНОЕ! Написал код за секунды А я мучился целый день как же не догодался сюда написать даже спать не хотел пока не узнаю как всё делается Теперь хоть и спать спокойно можно .
Уже написал код, не заметил, что вопрос решен, но все же, в этой регулярке дополнительно парсить данные не нужно. Code: $exp = "/\<td\>\<center\>(.+?)\<br\>\<a\shref\=\'([^\']+?)\'[^\>]+?\>\<b\>(.+?)\<\/b\>\<\/a\>(\<font[^\>]*?\>(.+?)\<\/font\>)?\<\/center\>\<\/td\>/is
Напомню, что в теме обсуждаются только вопросы, непосредственно связанные с ЯЗЫКОМ. Оффтоп буду тереть и жестоко наказывать.
hhover спасибо по прошлой проблемке, но сделал уже как grinay подсказал, всё работает, а раз работает пусть работает как есть Но всё равно спасибо! Вот образовалась проблема не могу понять как решить Есть вот такая HTML форма: Туда вводятся числа в верхнюю строчку от 1 до 19 , во 2-ую (нижнюю) строчку от 1 до 20. Нужно чтобы допустим ввожу я в первую строчку 2 во вторую 5 мне должно вывести куда-нибудь, например в файл result.txt вот такое вот: Code: 12 13 14 15 23 24 25 34 35 45 Тоесть первая цифра 2 обозначает сколько всего должно быть цифр в каждой по две ... Вторая цифра 5 обозначает что из неё будут браться цифры вида 1 2 3 4 5 и делаться двухзначная цифра ... Надо чтобы цифры не повторялись например в цифрах выше нет цифр 11 22 33 44 55 Ещё если есть цифры 12, то 21 уже не надо. Если есть 23, то 32 не надо. Если было бы в HTML форме первая цифра 3 вторая 5, тогда не должно было бы быть цифр 111 222 333 444 555 1x1 2x2 3x3 4x4 5x5 x11 x22 x33 x44 x55 11x 22x 33x 44x 55x (где x - любая цифра) Вот что должно выводиться: 123 124 125 134 234 245 134 135 345 345 Ещё если уже есть 123, то цифры 321 231 213 132 уже не должны быть. Как такое можно сделать? Помогите плз. Кто поможет готовым скриптом, тому с меня сайт с веб шеллом с правами записи в разные папки.
вот попробуй(параметры передаются через $f1 и $f2): PHP: <?php $file=fopen("result.txt","w"); function a($t,$z,$s){ global $f2,$f1,$file; for($q=($t+1);$q<=$f2;$q++){ if($z<$f1) a($q,($z+1),$s.$q); else fwrite($file,$s.$q."\r\n"); } } a(0,1,""); fclose($file); ?> Только я не догнал, почему у тебя второе число аж до 20? эт как? Цифр то всего 9(ну 10 с нулем, но он, как я понял, тебе не нужен).
Допустим если $f1=2, а $f2=20, тогда уже будут задействованы числа и 11 и 12 и так до 20, а в целом да они и состоят все из цифр 0-9 Шелл в личке. Скрипт работает, огромное СПАСИБО!
хочу написать скрипт для вытаскивания из больших спам листов определенного количества мыл по деапозону, тоесть от 0 до 50000, 50000 до 100000 нашел вот такой пример: <? $file = fopen("c:/www/html/file.txt","r"); if(!file) { echo("Ошибка открытия файла"); } else { $buff = fread ($file,100); print $buff; } ?> как сделать чтобы он считал строки по диапозону и выводил результат не встроку а в столбец или пробел заменялся переносом на новую строку
А не подойдет ли это: PHP: $mail_list = file("c:/www/html/file.txt","r"); for($i=0;$i < 50000; $i++){ echo "$mail_list[$i] <br>"; }
Почти.., только PHP: $mail_list = file("file.txt"); for($i=$number;$i < ($number+50000); $i++){ echo "{$mail_list[$i]} <br/>\r\n"; } $number - переменная(номер), начиная с которого читаются E-mail
вот вытащил из скрипта fsockopen($hostname,80,$errnum,$errstr,20) и не пойму за что отвечает пременные $errnum,$errstr и почему именно 20?
Но просто ели убрать точку то скрипт не выполнится((( Что обозначает точка ? Извените за ламерские вопросы но я недавно пхп начал изучать и по ходу обучение от вопросов не куда не дется (
2Fire3d <? $a = "100"; $b = "200"; echo $a + $b ."\n"; //выведет "300" echo $a . $b; //выведет "100200" ?> вот глянь взял из книги
PHP: <? $file = file("file.txt"); $start = 0; $end = 1000; if(!$file) { echo("Ошибка открытия файла"); } else { for($i=$start;$i < ($start+$end); $i++) { printf("%s<br>", $file[$i]); } } ?> сделал вот так спасибо
функция file("filename") считывает содержимое в файла в массив (=. У тебя лист разбит на строки или просто список в файле через пробел?