phpbar.de logo

Mailinglisten-Archive

[php] pattern matching

[php] pattern matching

Arne Klempert php at klempert.de
Die Aug 5 14:22:04 CEST 2003


Hallo BeWUssTlOsEr!

siehe: http://dict.leo.org/?search=senseless


> hab einen string der mehrere Markierungen enthält.
> jede dieser markierungen beinhalten mehrere informationen
> wie z.b. eine id von einer mysql table.
>
> ich möchte alle Markierungen im String mit einem Link
> ersetzen aber nur wenn die id die die Markierung enthält
> auch in der mysql table enthalten ist.

preg_replace() ist Dein Freund:
http://phpbar.de/hilfen/manual/php/de/function.preg-replace.php


_Eine_ Methode wäre, den Modifier "e" zu nutzen (der Ersetzungs-String
wird dabei als PHP-Code behandelt):

<?php

function checkLink($id,$name) {
    if ( [ID IN DATENBANK?] ) {
        return '<a href="'.$id.'">'.$name.'</a>';
    } else {
        return $name;
    }
}

$string = '--+--2435-NAME--+--';
$string = preg_replace (
          "/--\+--([0-9]+)-([^-]*)--\+--/e",
          "checkLink('\\1','\\2')",
          $string
);
echo $string;

?>

Aber vorsicht: Sofern Du viele Links in Deinem String hast, kann Du mit
dieser Methode (DB-Abfrage für jede ID) schnell Dein System ausbremsen.

Im übrigen würde sicher nicht nur ich es begrüßen, wenn Du bei Deiner
nächsten Mail in der Absender-Zeile Deinen Realnamen (Vorname Nachname)
angibst. Das erhöht die Wahrscheinlichkeit erheblich, auch künftig
Antworten auf Deine Fragen zu erhalten.


Viele Grüße
Arne
--
http://klempert.de



php::bar PHP Wiki   -   Listenarchive