WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP: gleichwertige alternative zu str_ireplace (http://www.wcm.at/forum/showthread.php?t=137499)

Potassium 22.06.2004 14:54

Zitat:

Original geschrieben von _m3
In Perl (die regex sollte in PHP auch funktionieren):
Code:

$x = '[url=www.wcm.at]wcm[/url]';
$x =~ s/\[url=(.*?)\](.*?)\[\/url\]/<a href=\"$1\">$2<\/a>/i;
print "$x \n";


und was bedeutet das?
da kenn ich mich ja hint und vorn ned aus :eek: :(

_m3 22.06.2004 15:11

Code:

Ersetze \[url=(.*?)\](.*?)\[\/url\] durch <a href=\"$1\">$2<\/a>

Potassium 22.06.2004 16:03

Zitat:

Original geschrieben von _m3
Code:

Ersetze \[url=(.*?)\](.*?)\[\/url\] durch <a href=\"$1\">$2<\/a>

:rolleyes:
was soll das (.*?)
und was is $1 und $2?

_m3 22.06.2004 16:21

Wenn Du in einer RegEx was mit runden Klammern klammerst, kannst Du im Ersetzen-Teil bzw. nach der Suche auf das, was in den Klammern steht, über $ZAHL zugreifen, wobei für den Wert von ZAHL die "(" von links nach rechts gezählt werden.

.* markiert alles ;)
und mit dem "?" sag man ihm, dass er mit dem .* aufhören soll, wenn er auf das erste [/url] stößt. Ohne dem "?" würde er bis zum letzten [/url] weiterlaufen.

Potassium 22.06.2004 18:35

:idee:
danke. :)
nur ein prob bleibt wenn ich einen text hab zb:
Code:

[#url]www.wcm.at[/url]
[#url=www.wcm.at]die beste computerzeitung &ouml;sterreichs[/url]

dann wandelt er nur eine url in ne url die andre bleibt im code stehen ( je nachdem welcher pref-befehl zuerst steht im script)
PHP-Code:

$text preg_replace("/\[url\](.*?)\[\/url\]/i","[url='http://$1']$1[/url]"$test);
$text =  preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/i","[url='http://$1']$2[/url]"$test); 


_m3 22.06.2004 18:54

in Perl setzt man dazu hinter der Option "i" auch noch das "g", dann macht er alle in dem String.
Wie das bei PHP geht, musst Du im Manual nachsehen.

käptn 22.06.2004 18:57

Eckige Klammern müssen maskiert werden, da sie normalerweise eine Zeichklassendefinition einleiten.

\[url\]

~

_m3 22.06.2004 19:07

Da hat der potassium wieder schlampert von mir abgeschrieben ;)

Potassium 22.06.2004 19:42

Zitat:

Original geschrieben von käptn
Eckige Klammern müssen maskiert werden, da sie normalerweise eine Zeichklassendefinition einleiten.

\[url\]

~

die sind maskiert aber die [#php] funktion vom board lässst diese striche weg :motz:
@_m3: :p:D

Potassium 22.06.2004 22:41

habs nun so:
Code:

if(substr_count(strtolower($text),"[url]") >= 1) {
               
                $text = preg_replace("/\[url\](.*?)\[\/url\]/i","$1", $text);
               
        }
        if(substr_count(strtolower($text),"WCM

findet wer den fehler? :D

argl die code funktion vom forum passt auch ned :mad:

ajo als eingabe fürs 2e bekommt er:
WCM


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag