Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Text um String ersetzen --> preg_replace [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




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

 
TobiaZ
06-06-2005, 16:18 
 
die Preg-funktionen erwarten auch reguläre ausdrücke. http://www.php-resource.de/tutorials/read/10/1/

 
asp2php
06-06-2005, 16:26 
 
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...

 
TobiaZ
08-06-2005, 14:58 
 
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...


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:53 Uhr.