Autor |
Nachricht |
Psilo
Threadersteller
Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 11:05
Titel strpos php |
|
|
hallo leute
ich bin grad dabei mir eine funktion zu schreiben welche mir alle links einer url auspucken soll und diese dann in eine xml datei speichert
das klappt so auch ganz gut.. nur werden leider auch doppelte einträge aufgenommen
dem ganzen wollte ich entgegenwirken indem ich mit strpos überprüfe ob der link schon in der mylinks.xml vorhanden ist
Code: |
foreach ($array[2] as $val) {
$data4check = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/sitemap/mylinks.xml");
$link4check = "<link>".$url.$array[1][$count]."</link>";
# Überprüfen ob schon vorhanden
if (strpos($link4check, $data4check) === false) {
echo "<br /><strong>link4check:</strong> $link4check<br /><strong>url array count</strong>: ".$url.$array[1] [$count]."<br /><br />Hier drin wird nach link4check gesucht. Falls vorhanden sollte nichts geschrieben werden<div style='border:5px solid #888; padding:20px; background:#F9F9F9;'>".$data4check."</div>";
# Link schreiben
$datei = fopen($_SERVER['DOCUMENT_ROOT'] . "/sitemap/mylinks.xml", "a");
fwrite($datei, "<link>".$url.$array[1][$count]."</link>\n");
fclose($datei);
# Info in Browser
echo "<p><strong>$count</strong>: Der Link <a href='".$url.$array[1][$count]."'>".$url.$array[1][$count]."</a> wurde erfolgreich vermerkt.</p>\n<hr />";
} else {
echo "Es wurde eine Übereinstimmung gefunden.";
}
$count++;
}
|
nun ist mein problem das er selbst wenn er den string finden müsste so tut als ob er ihn nicht findet
zur verdeutlichung hier noch das skript in aktion
www.it-pos.de/sitemap/test2.php
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 11:06
Titel
|
|
|
pack doch einfach erst alle links in ein array. kösch die doppelten inhalte mit array_unique und schreib dann erst deine links in die xml
|
|
|
|
|
Anzeige
|
|
|
Psilo
Threadersteller
Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 11:14
Titel
|
|
|
hui hui hui
bin noch ziemlich am anfang mit php
aber ich kanns ja mal versuchen
der ansatz hörst sich ja sehr vielversprechend an
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 11:19
Titel
|
|
|
kleiner hinweis:
Code: |
<?php
$links = array('mgi.de', 'mgi.de', 'spiegel.de', 'tagesschau.de');
print_r($links);
$links = array_values(array_unique($links));
print_r($links);
?>
|
|
|
|
|
|
Psilo
Threadersteller
Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 12:07
Titel
|
|
|
komisch.. aber irgendwie klappts nicht
gibt immer noch doppelte einträge
Code: | <?php
$url = $_POST ['url'];
if ($url!="") {
# Links filtern
$data = file_get_contents($url);
$array = array();
$link = preg_match_all('/<a href="?([^>]+?)"?>(.+?)/i',$data,$array,PREG_PATTERN_ORDER);
$arrayNew = array_values(array_unique($array));
$count = count($arrayNew[0]);
for($i=0;$i<=$count;$i++) {
print_r($arrayNew[0][$i]."<br />\n");
}
# Zur Verständlichkeit
echo"<!--";
print_r($arrayNew);
echo"-->";
}
else {
"Geben Sie bitte eine URL ein!";
}
?> |
hier eine vorschau: http://www.it-pos.de/sitemap/test3.php
im quellcode steht nochmal das array als kommentar.. es kommen leider immer noch doppelte einträge vor
Zuletzt bearbeitet von Psilo am Mi 06.05.2009 12:12, insgesamt 1-mal bearbeitet
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 06.05.2009 13:59
Titel
|
|
|
$link = preg_match_all('/<a href="?([^>]+?)"?>(.+?)/i',$data,$array,PREG_PATTERN_ORDER);
$arrayNew = array_values(array_unique($array));
Read the f§"%§"% manual. php.net/preg_match
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Mi 06.05.2009 14:13
Titel
|
|
|
bacon hat geschrieben: |
Read the f§"%§"% manual. php.net/preg_match |
selbstzensur, das lob ich mir
|
|
|
|
|
xaos
Dabei seit: 06.10.2004
Ort: Kargath
Alter: -
Geschlecht: -
|
Verfasst Mi 06.05.2009 14:30
Titel
|
|
|
Oder aber die Urls aus dem XML in ein array als key einlesen, die neuen urls hinzufügen.
Wenn die schon im Array sind wird kein neuer Eintrag generiert, array wieder ins xml, fertig.
|
|
|
|
|
|
|
|