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 15: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 16:11

Code:

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

Potassium 22.06.2004 17: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 17: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 19: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 19: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 19:57

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

\[url\]

~

_m3 22.06.2004 20:07

Da hat der potassium wieder schlampert von mir abgeschrieben ;)

Potassium 22.06.2004 20: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 23: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 00:53 Uhr.

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