2011-04-28 3 views
1

J'ai quelques fichiers (environ 500 fichiers) avec aucune extension.
Mais j'ai réussi à voir son contenu, il a des étiquettes bizarres et d'autres choses.PHP extrait et analyse _ question de base

J'ai besoin d'extraire tous les addreesses IP de celui-ci .. Ex dans la ligne 2, il y a toujours une adresse IP comme celui-ci ... (71.129.195.163)

En outre, il y a des balises html comme < a href = « http : //www.xyz.com "> dans beaucoup de lignes. J'ai besoin d'obtenir ce nom de domaine, comme xyz.com.

Quelqu'un pourrait-il aider ce débutant php? Je sais obtenir le fichier entier comme une chaîne et tout le th .. mais puisque php est puissant, je suis à la recherche d'un moyen doux et simple pour y parvenir.

Merci beaucoup

Répondre

1

Les expressions régulières sont idéales pour cela.

Pour trouver toutes les adresses IP dans un fichier:

$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]; 

Pour trouver tous les liens:

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

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

$link = $links[3]; 

Le contenu du fichier est supposé être en $ fileContents. Exécutez ce code pour chaque fichier. Si vous avez besoin de collecter toutes les adresses IP et les domaines que vous pouvez les fusionner en grands tableaux:

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

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

Salut, le tableau de liens est vide pour le code que vous avez écrit ... Nice Code btw ... il y a plusieurs une ligne href et c'est assez si je lis seulement la première occurrence car elle a le nom de domaine ... merci pour votre aide. comment puis-je modifier cela ... "? J'utilise foreach ($ ips comme $ key => $ a1) {echo $ a1;} .. mais je suis seulement gettin" tableau "affiché .. sont donc ces tableaux bidimensionnels ?! – Heather

+0

q2: J'aimerais aussi savoir comment $ linkPattern = '/href\w?\=\w?[\'"]{1}(.+?)[\'"]{1}/'; et $ 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}/'; travail? – Heather

+0

lorsque vous obtenez une sortie Comme tableau vous pouvez vider le tableau dans un format lisible pour comprendre les données: var_dump ($ a1); pour obtenir l'ip, vous devrez probablement faire $ ip = $ a1 [1]; – theduke