regulärer Ausdruck
Hallo!
Ich habe ein Problem mit einem regex: "%[[(.+)](.+)]%Use" => 'make_a_link( "$1" , "$2" )' (funktion siehe weiter unten) Aus [bla[blubb]] soll <a href="bla">blubb</a> werden alles prima sonderklasse, wenn sonst nix mehr in der richtung danach kommt. steht da [bla[blubb]] [[blo]] (was dannzu <a href="blo">blo</a> werden soll) steht im quältext: <a href="bla%5Dblubb%5D%0A%0A%5B%5Bblo">bla]blubb]<br /> <br /> [[blo</a><br /> </p><br /> <a href="index.php?prgm=wiki&mode=edit">edit</a> <a href="index.php?prgm=wiki&mode=lock">lock</a><br /></div> es wird also nicht ungreedy gemachted, obwohl ich ja extra dafür U angegeben habe. make_a_link sieht so aus: PHP-Code:
|
AW: regulärer Ausdruck
Bin mir net sicher. probier mal (.+?)
und du filterst bei "[bla[blubb]]" das bla nicht raus |
AW: regulärer Ausdruck
mach ich nachher mal,
"%[[(.+)]([^]]+)]%Use" hat auch nix gebracht... |
AW: regulärer Ausdruck
Schau mal, so läuft es:
PHP-Code:
|
AW: regulärer Ausdruck
okay, ich werde mal schauen. allerdings hat dein pattern
%[(.*)[(.+)]]%Us einen kleinen schöhnheitsfehler, deins matched auf [bla[blubb]] |
AW: regulärer Ausdruck
geschafft!
ich habe einfach mal die reihenfolge der pattern geändert :-) PHP-Code:
|
AW: regulärer Ausdruck
Ja ganz wie Du es wolltest :-)
Zitat:
|
AW: regulärer Ausdruck
Ach, und wenn Du [[bla]blub] oder [[bla]] matchen willst, dann halt so (und zwar ohne Arrays):
PHP-Code:
|
AW: regulärer Ausdruck
Zitat:
ich werds jetzt erst mal so machen, wird dann eh open-source (wie bei php so üblich), dann darfst dus auch gerne verbesser :-) |
AW: regulärer Ausdruck
Hi Julian.
Ich meine das so: Wenn Du der Funktion preg_replace() als Input "[[foo]bar]" übergibst, dann fällt da kein Geschwindigkeitsunterschied auf. Doch wenn Du der Funktion jetzt z.B. 1 KB Daten als Input übergibst, dann wäre meine Variante ca. ein drittel schneller. Benchmark: ------ Einstellungen ------ dfgsdfgsdfgsdf [[blubb]bla] ncvbnnnnnhgfffffffffddddddd dj fjtzj tz jtdzj tdz jtz jtz [[blubb]]dtzj dtzjdtzjd tzjfdtzjdtz [[blubb]]rtzhd rthdtrz drhdrt r drt[[blubb]]zuztutumtrzumtrzu ztr utrzu rztu rtzuztru467 4z56i6 rk il ioö-io zk t srths[[blubb]]jhh [[blubb]] hjjh[[blubb]]tzz trz i67u 46 z34z 46z trh z rm[[blubb]bla] ncvbnnnnnhgfffffffffddddddd dj fjtzj tz jtdzj tdz jtz jtz [[blubb]]dtzj dtzjddtzjdtz [[blubb]]rtzhd rthdtrz drhdrt r drt[[blubb]]zuztutumtrzumtrzu ztr utrzu rztu rtzuztru467 4z56i6 rk il ioö-io zk t srths[[blubb]] [[blubb]] [[blubb]]tzz trz i67u 46 z34z 46z trh z rm[[blubb]bla] ncvbnnnnnhgfffffffffddddddd dj fjtzj tz jtdzj tdz jtz jtz [[blubb]]dtzj dtzjdtzjd tzjfdtzjdtz [[blubb]]rtzhd rthdtrz drhdrt r drt[[blubb]]zuztutumtrzumtöärzu ztr utrzu rztu rtzuztru467 4z56i6 rk il ioö-io zk t srths[[blubb]] löl[[blubb]]kökl [[blubb]]tzz trz i67u 46 z34z 46z trh z rm[[blubb]bla] ncvbnnnnnhgfffffffffddddddd dj fjtzj tz jtdzj tdz jtz jtz [[blubb]]dtzj dtzjdtzjd tzjfdtzjdtz [[blubb]]rtzhd rthdtrz drhdrt r Datenlänge: 1024 Byte Replacements: 24 --------------------------- Deine Variante: ~78 ms Meine Variante: ~60 ms --------------------------- System: - Win32 - PHP 4.3.11 - Apache 2.0.52 - PII @ 450MHz --------------------------- Nicht nur das Deine Variante langsamer ist, Nein, es kommt auch nicht wirklich das gewünschte raus. Bei meiner schon und schneller ist sie auch :-) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:21:13 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.