BartTheDevil89
Devilution Media
- 2 Mai 2006
- 3.960
- 103
Hallo,
bin gerade dabei mich etwas mit nem mini bbcode - System zu befassen. Dabei bin ich jetzt allerdings auf ein Problem getroffen. Denn ich habe folgenden Aufbau:
Also diese 3 Links können auftreten. Daraus möchte ich jetzt folgendes machen können:
Wie löse ich das am besten? Soweit bin ich schon bekommen:
Damit erkenne ich jetzt also schon alle Domains, die auftreten. Damit macht er mir aber derzeit jetzt folgendes Bild:
Demnach muss ich also ja den regulären Ausdruck um folgendes erweitern:
( Nicht [domain] ODER Nicht [domain= ) (Hier dann jetzt mein jetziger regulärer Ausdruck) (Hier Nicht [/domain])
Müsste ich mit den 3 Teilen doch so hinbekommen, dass er mir das einfach umwandelt, oder? Bzw. wie setz ich das am sinnvollsten jetzt da oben um? Mein Versuch war dann folgender:
Allerdings ist das ja nur teilweise vollständig bzw. nicht ganz fertig, da ich hier nicht weiterkomme.
Hoffe ihr könnt vielleicht helfen.
bin gerade dabei mich etwas mit nem mini bbcode - System zu befassen. Dabei bin ich jetzt allerdings auf ein Problem getroffen. Denn ich habe folgenden Aufbau:
https://www.domain.de
[domain]https://www.domain.de[/domain]
[domain=https://www.domain.de]Testbegriff[/domain]
Also diese 3 Links können auftreten. Daraus möchte ich jetzt folgendes machen können:
[domain]https://www.domain.de[/domain]
[domain]https://www.domain.de[/domain]
[domain=https://www.domain.de]Testbegriff[/domain]
Wie löse ich das am besten? Soweit bin ich schon bekommen:
PHP:
$pattern = "/(((http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
$string = preg_replace($pattern, " [domain]$1[/domain]", $string);
Damit erkenne ich jetzt also schon alle Domains, die auftreten. Damit macht er mir aber derzeit jetzt folgendes Bild:
[domain]https://www.domain.de[/domain]
[domain][domain]https://www.domain.de[/domain][/domain]
[domain=[domain]https://www.domain.de[/domain]]Testbegriff[/domain]
Demnach muss ich also ja den regulären Ausdruck um folgendes erweitern:
( Nicht [domain] ODER Nicht [domain= ) (Hier dann jetzt mein jetziger regulärer Ausdruck) (Hier Nicht [/domain])
Müsste ich mit den 3 Teilen doch so hinbekommen, dass er mir das einfach umwandelt, oder? Bzw. wie setz ich das am sinnvollsten jetzt da oben um? Mein Versuch war dann folgender:
PHP:
$pattern = "/((([domain])|([domain=))?((http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
$string = preg_replace($pattern, " [domain]$1[/domain]", $string);
Allerdings ist das ja nur teilweise vollständig bzw. nicht ganz fertig, da ich hier nicht weiterkomme.
Hoffe ihr könnt vielleicht helfen.
Evtl. müsste mans dann noch etwas anpassen.