Регулярка для парсига дедиков

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
запилил регулярку для парсинга сбрученых дедов

PHP:
<?
$voruem = file_get_contents("http://icq.iforum.name/viewtopic.php?id=32");
preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})(@{1}).*/", $voruem, $found);
$i = 0;
while ($i < count($found[0])) {
echo "{$found[0][$i]}<br>";
$i++;
}
?>

но прога которая чекает их на валидность - DVAlidChecker1.1, требует строки такого вида

ip@login;pass

а регулярка которая выше, пропускает такие

88.116.1.22 admin ; password

и такие строки

58.211.165.178:3389 Administrator; 123456

помогите пжалуста составить регулярку так чтобы она сохраняла только строки такого вида - ip@login;pass без пробелов, двоеточий и портов)
 
подскажите кто не будь как удалять строчки у которых идут два переноса строк подрят, то есть <br /><br> или <br><br> очень нужно :thenks:

PHP:
 <?php
header ("Content-Type: text/plain; charset=utf-8");
$url = 'http://telemoney.moy.su/news/khaljavnaja_razdacha_dedikov_aprel_2012_god_maj_ijun_2012/2012-04-25-50';
$string = file_get_contents("$url");
preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})?@.*?;.{1,20}<br/", $string, $found);
$i = 0;
while ($i < count($found[0])) {
echo "{$found[0][$i]}>";
$i++;
}
?>

a2f2a31ce09a831819bb7dbb2498ccaa.jpg
 
PHP:
<?php
$url = 'http://telemoney.moy.su/news/khaljavnaja_razdacha_dedikov_aprel_2012_god_maj_ijun_2012/2012-04-25-50';
$string = file_get_contents($url);
preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})@{1,}([^;]+);([0-9A-z_-]+)/s", $string, $found);

$total = sizeof($found[1]);
for($i=0; $i<$total; $i++) {
$ip = $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i];
$login = $found[5][$i];
$pass = $found[6][$i];

echo $ip.'@'.$login.';'.$pass."\r\n";
}
?>
 
подскажите пжалуста почему неправельной кодировке отображается, русский текст который под спойлером, вот пример Для просмотра ссылки Войди или Зарегистрируйся

PHP:
<?php
 
header ("Content-Type: text/plain; charset=UTF-8");
$stringg = $_POST['textarea'];
$stringg = iconv ("CP1251", "UTF-8", $stringg);
$stringg = explode("\n", $stringg);
 
foreach ($stringg as $urlded) {
 
$string = file_get_contents($urlded);
preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})@{1,}([^;]+);([0-9A-z_-]+)/s", $string, $found);
$total = sizeof($found[1]);
for($i=0; $i<$total; $i++) {
$ip = $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i];
$login = $found[5][$i];
$pass = $found[6][$i];
 
echo $ip.'@'.$login.';'.$pass."\r\n";
echo "<br>";
}
}
 
 
?>
 
всё дело в том что с разных форумов получается контент в разной кодировке

utf-8 или windows-1251

нужно привести к какой то одной кодировке используя iconv или mb_convert_encoding и уже потом выводить общим списком
 
нужно привести к какой то одной кодировке используя iconv или mb_convert_encoding и уже потом выводить общим списком

то есть сначала нужно все строки спарсить в массив, потом весь масив перекодировать в одну кодировку, а потом вывести?
 
нет после парсинга каждого url надо определить в какой кодировке получен контент

если он получен не в той которая будет на выводе то конвертировать его в нужный и уже потом регулярку натравливать и далее

на выходе получатся данные в одной кодировке
 
Назад
Сверху