• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

preg_replace wörter wie im array angegeben ...

webana

Mitglied
Hallo,

ich habe ein kleines Problem mit preg_replace und habe die Lösung auf der Zunge, weil ich glaub schon einmal eingesetzt habe.

PHP:
  $funktionen = array('explode()','htmlentities()','implode()','preg_replace()');
  
  foreach ($funktionen as $val) {
    $text = preg_replace("/($val)/im", "<a href=\"index.php?name=$1\">$1</a>", $text);
  }

In meinem Beispiel sollte zb preg_replace() verlinkt werden, was es auch mehr oder weniger tut (Siehe nächster Absatz). das preg_replace in PREG_REPLACE_EVAL verlikt er aber auch, obwohl das nur ein Teil des Wortes ist.

Eigentlich sollten die () auch verlinkt werden, tut es aber nicht ... Wobei mich das jetzt weniger stört.

Alex
 
Da Klammern in Regulären Ausdrücken eine Besondere Bedeutung haben, musst du sie erst durch http://de2.php.net/preg_quote jagen, damit dein explode() am ende z.b. so aussieht explode\(\).

Ach und da du einfach nur Strings ersetzt und eh jedes ergebniss durchgehst solltest du str_replace verwenden, da die Funktion viel schneller ist und das verwenden von regulären ausdrücken nur ratsam ist, wenn du muster suchst und keine genau festgelegten strings.
 
@Slibbo

PHP:
  foreach ($funktionen as $val) {
    $text = str_replace($val, "<a href=\"index.php?name=".preg_replace ("/[^a-z_]/", "",$val)."\">$val</a>", $text);
  }

Funktioniert ganz gut ... Danke

Alex
 
Hallo,

gibt es ein Character in preg_replace das nur freistehende Wörter ersetzt?

PHP:
        // Search phrase pieces

            $SearchValues[] = '#\barray\b#i';
            $SearchValues[] = '#\bint\b#i';

        // Replace phrase pieces

                $ReplacementValues[] = '<span style=\'color:#693\'>array</span>';
                $ReplacementValues[] = '<span style=\'color:#693\'>int</span>';

        return preg_replace($SearchValues, $ReplacementValues, $text);

In dem folgenden Beispiel wird das wort 'array' immer grün ausgegeben, auch das '$array':

Code:
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

Gruß Alex
 
Hi, ist zwar wieder nicht schön, aber hier

PHP:
$SearchValues[] = '/(([^$]|\A)\barray\b)/i';
$SearchValues[] = '/(([^$]|\A)\bint\b)/i';

$ReplacementValues[] = '<span style=\'color:#693\'>$0</span>';
$ReplacementValues[] = '<span style=\'color:#693\'>$0</span>';

versuch es mal hiermit.
Hiermit ([^$]|\A) sage ich das es keinen $ Zeichen davor stehen haben darf oder es am Satzanfang ist.
 
Wenn du unbedingt darauf bestehst es mit regulären ausdrücken zu erledigen und uns nicht erklären willst was genau du machst dann ist hier alles was du dafür brauchst.

http://www.naden.de/blog/regex-cheat-sheet
http://www.phpliveregex.com/

Es klingt trotzdem immernoch wirklich komisch was du hier machst und es wäre schon wenn du uns erklären würdest was du genau vorhast damit wir dir besser helfen können.

Ps: Wenn dein Englisch nicht so gut ist und du Programmieren lernen willst dann willst du auch Englisch lernen. :)
 
Hallo,

w hatte ich schon versucht ... ich weis zwar das es eine Liste gibt aber die ich gefunden habe (php.net) ist in Englisch, und Übersetztung mit google naja ...

Du kannst die Sprache auf php.net auch ändern, aber erstens finde ich nicht alles immer korrekt übersetzt und zweitens ist nicht alles übersetzt. Drittens wer programmieren lernen will, wie Slibbo schon sagt, kommt um Englisch nicht herum.
 
Wenn du unbedingt darauf bestehst es mit regulären ausdrücken zu erledigen und uns nicht erklären willst was genau du machst dann ist hier alles was du dafür brauchst. Es klingt trotzdem immernoch wirklich komisch was du hier machst und es wäre schon wenn du uns erklären würdest was du genau vorhast damit wir dir besser helfen können

Hallo,

ich möchte bei der Aufbau einer Funktion, die Parameter verlinken und das ganze Farblich formatieren ...

Code:
string substr ( string $string , int $start [, int $length ] )


beschreibung.png

Gruß Alex
 
Zurück
Oben