Archiv verlassen und diese Seite im Standarddesign anzeigen : Text um String ersetzen --> preg_replace
Timelesk 06-06-2005, 16:08 Hallo,
ich habe einen String, der sich mind. 10x ändert, aber ich weiß nicht, welche Werte er annimmt.
Nun würde ich gerne den Text um diesen String ersetzen. Dieser Text ist immer gleich!
Mein Versuch:
$seite = preg_replace("/http\:\/\/STRING\.$domainname\.$domainext\//i", //Zeilenumbruch fuer euch
$home_path."http://STRING.$domainname.$domainext",$seite);
STRING = der sich immer ändernde String
1. String = *
2. String = i don't know
So, wenn ich dass aber nun ausführe, kommt nicht das gewünschte Ergebnis heraus!
Nur http:// nehmen geht auch nicht, da dort auch noch Verlinkungen zu anderen Seiten existieren, die nicht berücksichtigt werden sollen...
Ich bin schon ne Weile am Grübeln, komm aber nicht zu einer gescheiten Lösung!
Wisst ihr einen Weg? Wäre echt genial!
Vielen Dank
die Preg-funktionen erwarten auch reguläre ausdrücke. http://www.php-resource.de/tutorials/read/10/1/
schau dir das 3. Bsp. mal an: http://www.php.net/function.preg_match , mit etwas Modifikation kannst du das Teil unmittelbar nach http:// heraus holen ;)
Quetschi 06-06-2005, 16:42 Hallo,
evtl. mit parse_url() das ganze zerpflücken? :dontknow:
Timelesk 07-06-2005, 19:16 Hi,
mit preg_match bekomm ich ja nur eine URL nach der anderen raus... Gut, ich könnte den Array dann mit einer for-schleife durchwandern und jede Subdomain extra ersetzen.
Ich lade den Quelltext einer HTML-Datei über ob_start, ob_get_contents und ob_end_clean in eine Variable rein!
Nun möchte ich alle URLs, die zu einer bestimmten Domain gehören, samt Subdomains mit einem Vorsatz (z.B. http://www.referer.de/url=) versehen.
Nur leider will das ganze nicht so, wie ich will!
preg_match("/^(http:\/\/)?(\.$domainname+)/i", $seite, $treffer, PREG_OFFSET_CAPTURE);
print_r($treffer);
exit;
$seite = preg_replace("/^(http\:\/\/)((.*?)(\.$domainname\.$domainext\/))/i",
$home_path."http://",$seite);
$domainname = nur der Name der Domain (www.google.de --> google)
$domainext = nur die Endung (www.google.de --> de)
Ich weiß nicht, was ich falsch mache :confused:
Danke für eure Ratschläge...
habs jetzt nicht ganz durchgelesen. auch wegen dem scrollbalken.aber wenn ich mir deinen code so ansehe, dann frage ich mich, welchen inhalt z.B. die Variable $domainname hat. Der wird nirgends definiert, oder machst du das vorher.
Stell auch mal dein Error-Reporting auf E_ALL.
Timelesk 08-06-2005, 16:34 Hi,
der Domainname wird vorher schon korrekt ausgelesen.
$suche = (strstr($url,'www.')) ? 'www.' : 'http://';
$url_var = explode($suche,$url);
$url_var = explode('/',$url_var[1]);
$suche = ($suche == 'www.') ? 'http://www.' : 'http://';
$domainname = $url_var[0];
$var = explode('.',$domainname);
$domainname = $var[0];
$domainext = $var[1];
$domainext .= (count($var) == 3) ? '.'.$var[2] : '';
$domain_only = "$domainname.$domainext";
$domain = $suche.$url_var[0].'/';
Vielleicht ein wenig umständlich, aber es geht!
Dann hab ich in den Anfang der Datei folgendes geschrieben:
ini_set('error_reporting', E_ALL);
Und es kam nichts dabei heraus! Er arbeitet alles korrekt durch, aber den Teil vorne drann will er mir net setzen!
PS: Hab's jetzt mal umgebrochen, aber in meiner Auflösung (1280x768) gab's keinen Scrollbalken...
|
|