Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

preg_replace - wer kann helfen?

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
WorstCase
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 16.02.2004, 11:39
Wohnort: Jülich

Beitrag von WorstCase » 19.02.2004, 17:42

Hallo,

ich möchte wegen mod_rewrite den Urlstring
in
umwandeln.

In der .htaccess ist das soweit klar.

Aber mit den regulären Ausrücken in PHP habe ich so meine Probleme (Anfänger).

Mit den Suchmustern für preg_replace habe ich aber so meine liebe Mühe.

Habe zwar schon Tutorials und das PHP-Handbuch gelesen, aber vieles ist auf English und da bin ich schon einige Jahre aus der Übung. :wink:

Es wäre toll wenn mir jemand helfen könnte.

Gruß

WorstCase

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Nexus
PostRank 4
PostRank 4
Beiträge: 105
Registriert: 22.01.2004, 10:03
Wohnort: (DE|NRW|OWL)

Beitrag von Nexus » 19.02.2004, 19:25

eigentlich willst du in der .htaccess
in


umwandeln, oder ;-) ?

Was willst du jetzt konkret in php machen? Die Fragestellung ist mir noch nicht ganz klar :roll:

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 19.02.2004, 19:33

Die Fragestellung ist mir noch nicht ganz klar
Dem schliesse ich mich an... was willst du genau machen? Wo hakts?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Angelina
PostRank 3
PostRank 3
Beiträge: 69
Registriert: 03.02.2004, 18:30

Beitrag von Angelina » 19.02.2004, 19:48

glaub mal, mit dem Pattern der Funktion preg_replace haperts - oder ?

will ja wohl
"verwandeln" - in der .htaccess is ja soweit alles klar - oder ?




*/
?>

WorstCase
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 16.02.2004, 11:39
Wohnort: Jülich

Beitrag von WorstCase » 19.02.2004, 19:56

Über die .htaccces habe ich festgeleft welche html-Datei wie nach PHP umgesetzt werden soll. Das ist klar und kein Problem.

Jetzt habe ich aber in meinen Seiten Urls mit Parameteraufruf.

Diese Urls möchte ich jetzt über preg_replace in *.html umwandeln.
Ich kann nämlich nicht alle Links per Hand in *.html abändern.

Für das Nuke-System gibt es so etwas. Ich poste hier mal einen Teil der in den Header eingebunden wird.
ob_start();

function replace_for_mod_rewrite(&$s) {
$urlin = array(
"'(?<!/)modules.php\?name=News&file=article&sid=([0-9]*)'",
"'(?<!/)modules.php\?name=News&file=article&sid=([0-9]*)'"
);
$urlout = array(
"article\\1.html",
"article\\1.html"
);

$s = preg_replace($urlin, $urlout, $s);
return $s;
}
Nach diesem System möchte ich jetzt z.B. den Link
https://www.domain.de/datei.php?parameter=4711
in https://www.domain/paramter4711.html umwandeln.


Ich hoffe ich habe es jetzt etwas klarer formuliert. :wink:

Gruß

WorstCase
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 16.02.2004, 11:39
Wohnort: Jülich

Beitrag von WorstCase » 20.02.2004, 14:20

@ Angelina

Ja, ich komme mit den Pattern nicht klar.

Gruß

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 20.02.2004, 15:15

Hallo WorstCase,

gehe ich richtig in der Annahme dass "parameter" immer Buchstaben sind, "Zahl" immer Ziffern? Poste doch einfach mal ein paar Beispiele deiner URLs. Sobald ich das weiss kann ich dir da was basteln.

Generell möchte ich hier noch anmerken dass du besser alle Links manuell umstellen solltest, die automatische Lösung kann nicht so gut funktionieren wie wenn man manuell alle Files durchsucht und die Links von Hand umschreibt. Wenn man ein gescheites Programm benutzt ist das auch gar nicht so viel Arbeit.

WorstCase
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 16.02.2004, 11:39
Wohnort: Jülich

Beitrag von WorstCase » 20.02.2004, 15:53


Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 20.02.2004, 16:23

Code: Alles auswählen

<?
function replace_for_mod_rewrite&#40;&$s&#41; &#123; 
$s = preg_replace&#40;"'hotel.php\?&#40;&#91;a-z&#93;+&#41;=&#40;&#91;0-9&#93;+&#41;'", "\\1\\2.htm", $s&#41;; 
return $s; 
&#125;

$url_pre = "Dies ist ein Beispieltext http&#58;//www.domain.de/hotel.php?land=12 der vor, nach und zwischen http&#58;//www.domain.de/hotel.php?stadt=301 den Links steht.";
echo $url_pre."<br />";

$url_new = replace_for_mod_rewrite&#40;$url_pre&#41;;
echo $url_new."<br />";
?>
Das habe ich mal kurz gebastelt, funktioniert auch so weit. Um das nun auf die komplette Seite anzuwenden solltest du diese in einen Buffer laden, diesen dann durch die Funktion jagen und dann ausgeben.

Das könnte so aussehen:

Code: Alles auswählen

<?

function replace_for_mod_rewrite&#40;&$s&#41; &#123;
$s = preg_replace&#40;"'hotel.php\?&#40;&#91;a-z&#93;+&#41;=&#40;&#91;0-9&#93;+&#41;'", "\\1\\2.htm", $s&#41;;
return $s;
&#125;

ob_start&#40;"replace_for_mod_rewrite"&#41;;
?>

<!-- normaler Seiteninhalt... -->
Zuletzt geändert von Southmedia am 20.02.2004, 17:58, insgesamt 2-mal geändert.

Nexus
PostRank 4
PostRank 4
Beiträge: 105
Registriert: 22.01.2004, 10:03
Wohnort: (DE|NRW|OWL)

Beitrag von Nexus » 20.02.2004, 17:43

Du kannst die replace_for_mod_rewrite() auch direkt an den ob_start() hängen:
<?php
ob_start("replace_for_mod_rewrite");
?>
Diese wird dann vor der Ausgabe des Buffers austomatisch auf diesen angewand.

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 20.02.2004, 17:57

Optimal, ich habe es oben geändert. Sieht viel schöner aus so. Hab bisher kaum mit Outputbuffering gearbeitet. Gefällt mir aber so der Code.

Trotzdem will ich nochmal erwähnen dass es für den Server sicher gesünder wäre das ganze wirklich in den Dateien dauerhaft zu ersetzen.

WorstCase
PostRank 1
PostRank 1
Beiträge: 17
Registriert: 16.02.2004, 11:39
Wohnort: Jülich

Beitrag von WorstCase » 20.02.2004, 18:55

@Southmedia u. Nexus

Ich bin beeindruckt. :roll:

Es funktioniert. :D Herzlichen Dank für die prompte Lösung.
Ich hätte das mit meinen bescheidenen PHP-Kenntnissen nicht hinbekommen.

Das mit der manuellen Änderung der Urls kann ich erst später realisieren, aber Danke für den Tipp.

Gruß

WorstCase

Nexus
PostRank 4
PostRank 4
Beiträge: 105
Registriert: 22.01.2004, 10:03
Wohnort: (DE|NRW|OWL)

Beitrag von Nexus » 20.02.2004, 20:06

um solche Änderungen mit minimalen Aufwand machen zu können setzte ich bei allen Projekten wo Inhalte aus einer DB kommen wie es ja auch bei dir der Fall zu sein scheint zur Linkerzeigung eine funktion ein:

Code: Alles auswählen

  function makeLink&#40;$id, $link, $class="deineDefaultCssKlasse", $additional=''&#41; &#123;
    return '<a href="'.hierIrgentwasMitDerIDMachen.'" class="'.$class.'" '.$additional.'>'.$link.'</a>';
  &#125;
Dann kannst du das aussehen aller Links an einer Stelle zentral ändern. Über die CSS-Klasse kannst du das aussehen des Links anpassen. Alternativ in $additional weitere Eigenschaften übergeben. 2 Beispiele (minimal, maximal)

Code: Alles auswählen

<?php 
  echo makeLink&#40;'3', 'Die Stadt 3'&#41;;
  echo makeLink&#40;'3', 'Die Stadt 3', 'StadtLink" 'style="color&#58;#ffffff"'&#41;;
?>

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag