mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 07:20 Benutzername: Passwort: Auto-Login

Thema: strpos php vom 06.05.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> strpos php
Seite: 1, 2  Weiter
Autor Nachricht
Psilo
Threadersteller

Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 11:05
Titel

strpos php

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 11:06
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Psilo
Threadersteller

Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 11:14
Titel

Antworten mit Zitat Zum Seitenanfang

hui hui hui
bin noch ziemlich am anfang mit php

aber ich kanns ja mal versuchen *ha ha*
der ansatz hörst sich ja sehr vielversprechend an
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 11:19
Titel

Antworten mit Zitat Zum Seitenanfang

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);

?>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Psilo
Threadersteller

Dabei seit: 20.02.2007
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 12:07
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 06.05.2009 13:59
Titel

Antworten mit Zitat Zum Seitenanfang

$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
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mi 06.05.2009 14:13
Titel

Antworten mit Zitat Zum Seitenanfang

bacon hat geschrieben:

Read the f§"%§"% manual. php.net/preg_match


selbstzensur, das lob ich mir *ha ha*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
xaos

Dabei seit: 06.10.2004
Ort: Kargath
Alter: -
Geschlecht: -
Verfasst Mi 06.05.2009 14:30
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
 
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.