Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [php] Новичкам: задаем вопросы (https://forum.antichat.xyz/showthread.php?t=40896)

Dr.Frank 07.06.2007 14:36

Цитата:

Сообщение от The_HuliGun
Как видишь сочетание символов \x1e и \x10 воспринимается как один символ.

Если строка в двойных ковычках, то в твоем случае даже не надо смотреть сочетание сивмолов \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++;
  }
 }
?>


Cond 08.06.2007 02:05

У меня проблема в регулярных выражениях не могу сообразить как сделать чтобы все ячейки написанные ниже были помещены в массив :(
В HTML таблице есть ячейки вида:
Код:

<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 занести в массив потом сделать
Код:

$exp_2 = '/<td><center>(.*?)<br><a href=(.*?)>(.*?)<\/a><\/center><\/td>/';
Занести в массив отпадает надо чтобы поочереди всё было :(
Помогите разобраться плз как сделать :)
Вроде как и пустиковое то дело, а мне совсем непонятно :(.

grinay 08.06.2007 02:28

Стукни в асю 939455 помогу с регулркой.Просто не совсем вопрос понятен.

Isis 08.06.2007 02:52

Эм еси у тебя только первая и последняя, то прочитай внимательно про preg_match_all и его 4 парметром !

Cond 08.06.2007 03:21

Код:

<?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! СПАСИБО ОГРОМНОЕ! Написал код за секунды :)
А я мучился целый день как же не догодался сюда написать :) даже спать не хотел пока не узнаю как всё делается :)
Теперь хоть и спать спокойно можно :).

hhover 08.06.2007 04:43

Уже написал код, не заметил, что вопрос решен, но все же, в этой регулярке дополнительно парсить данные не нужно.
Код:

$exp = "/\<td\>\<center\>(.+?)\<br\>\<a\shref\=\'([^\']+?)\'[^\>]+?\>\<b\>(.+?)\<\/b\>\<\/a\>(\<font[^\>]*?\>(.+?)\<\/font\>)?\<\/center\>\<\/td\>/is

_Great_ 08.06.2007 16:24

Напомню, что в теме обсуждаются только вопросы, непосредственно связанные с ЯЗЫКОМ.
Оффтоп буду тереть и жестоко наказывать.

Cond 09.06.2007 01:08

hhover спасибо по прошлой проблемке, но сделал уже как grinay подсказал, всё работает, а раз работает пусть работает как есть :) Но всё равно спасибо!
Вот образовалась проблема не могу понять как решить :(
Есть вот такая HTML форма:
http://img55.imageshack.us/img55/4836/scrinma3.jpg
Туда вводятся числа в верхнюю строчку от 1 до 19 ,
во 2-ую (нижнюю) строчку от 1 до 20.
Нужно чтобы допустим ввожу я в первую строчку 2 во вторую 5 мне должно вывести куда-нибудь, например в файл result.txt вот такое вот:
Код:

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 уже не должны быть.
Как такое можно сделать? Помогите плз.
Кто поможет готовым скриптом, тому с меня сайт с веб шеллом с правами записи в разные папки.

Dr.Frank 09.06.2007 06:45

Цитата:

Сообщение от Cond
Тоесть первая цифра 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 с нулем, но он, как я понял, тебе не нужен).

Cond 09.06.2007 12:37

Цитата:

Сообщение от Dr.Frank
Только я не догнал, почему у тебя второе число аж до 20? эт как? Цифр то всего 9(ну 10 с нулем, но он, как я понял, тебе не нужен).

Допустим если $f1=2, а $f2=20,
тогда уже будут задействованы числа и 11 и 12 и так до 20, а в целом да они и состоят все из цифр 0-9 :)
Шелл в личке.
Скрипт работает, огромное СПАСИБО! :)


Время: 23:58