PHP извлечь и разобрать _ основной вопрос - PullRequest
1 голос
/ 29 апреля 2011

У меня есть несколько файлов (около 500 файлов) без расширения.
Но мне удалось просмотреть его содержимое, в нем есть странные теги и прочее.

Мне нужно извлечь из него все IP-адреса .. Например, в строке 2 всегда есть такой IP-адрес ... (71.129.195.163)

Кроме того, во многих строках есть несколько HTML-тегов, таких как . Мне нужно получить это доменное имя от него, например xyz.com.

кто-нибудь может помочь этому новичку php? я знаю, чтобы получить весь файл в виде строки и все такое ... но так как PHP мощный, я ищу приятный и простой способ для достижения этой цели.

Большое спасибо

1 Ответ

1 голос
/ 29 апреля 2011

Регулярные выражения отлично подходят для этого.

Чтобы найти все IP-адреса в файле:

$ipPattern = '/(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}/';

$ips = array();
preg_match_all($ipPattern, $fileContents, $ips);
$ips = $ips[0];

Чтобы найти все ссылки:

$linkPattern = '/href(\s+)?\=(\s+)?[\'"](.+?)[\'"]/';

$links = array();
preg_match($linkPattern, $fileContents, $links);

$link = $links[3];

Предполагается, что содержимое файла находится в $ fileContents. Запустите этот код для каждого файла. Если вам нужно собрать все IP-адреса и домены, вы можете объединить их в большие массивы:

$allIps = array();
$allLinks = array();

// after each run of the above code do:
$allIps = array_merge($allIps, $ips);
$allLinks[] = $link;
...