Autor | Zpráva | ||
---|---|---|---|
uzivatel Profil * |
#1 · Zasláno: 18. 5. 2007, 11:53:45
Zdravím.. Snažím se tvořit komentáře na webu.. Komentářů je už dost tak bych chtěl stvořit reakce na jiný koment..
Zatím jsem to vyřešil, [$cislo] kde $cislo je číslo komentáře, na který se ráguje.. [2] ahoj ráguju na dvojku Jak spáchat regulární výraz, který mi nahradí [cislo] za "<a href='#cislo'>reakce na [cislo]</a> " Zkoušel jsem toto: $zprava_z_db = preg_replace("(^[[0-9]|[1-9][0-9]]$)", "číslo <strong>\0</strong>", $zprava_z_db); nebo $zprava_z_db = preg_replace("(^[1-9]?[0-9]$)", "číslo <strong>\0</strong>", $zprava_z_db); Ani jedno nefunguje :-(. Výsledek vypadá třeba takto <strong>[1</strong>3 (respektivě, tučné je pouze část čísla. Musí to bý reakce od 0-99.. Děkuji |
||
tiso Profil |
#2 · Zasláno: 18. 5. 2007, 12:43:43 · Upravil/a: tiso
Za predpokladu že máš spätné lomítka po ^ a pred ]$ tak Ti tam chýbajú zátvorky a hodil by sa kvantifikátor
Okrem toho nemusíš vylučovať komentáre v tvare 02, pokiaľ ich tam nemáš tak sa nenahradia, nie je to síce najčistejšie riešenie ale funguje to... |
||
Joker Profil |
#3 · Zasláno: 18. 5. 2007, 12:44:46
Problém asi bude, že ten výraz obsahuje i začátek a konec řetězce, tj. ^ a $.
Tím pádem by tomu vyhověl jenom řetězec například "[2]", ale už ne "[2] nějaký text" Jinak dobrá pomůcka na kontrolu regulárních výrazů je tohle: http://weitz.de/regex-coach/ |
||
uzivatel Profil * |
#4 · Zasláno: 18. 5. 2007, 12:55:52
preg_replace("(^([[0-9]|[1-9][0-9]])$)" nefunguje vůbec (nenajde číslo).. Když mám dejme tomu
bla la blab bla bla nejaky text [22] reakce nakomentář 22 [11] ještě dodatek ke komentáři 11 nejaky text Jak v tom textu najít [$cislo] přes regulární výraz? Pokaždé mi to najde je jen (25 --> 2 a 5) |
||
Joker Profil |
#5 · Zasláno: 18. 5. 2007, 13:10:46
Jak říkám, tomuhle výrazu odpovídá (za předpokladu, že tam jsou zpětná lomítka, které fórum sežralo) řetězec jenom v případě, že kromě toho čísla v hranatých závorkách už nic jiného neobsahuje.
Tj. v současnosti projde jenom: "[xx]" a neprojde: "cokoliv [xx]" anebo "[xx] cokoliv" |
||
Mastodont Profil |
#6 · Zasláno: 18. 5. 2007, 13:29:46 · Upravil/a: Mastodont
Číslo v hranatých závorkách je &[[0-9]*&]
Namísto & si dosaď zpětná lomítka |
||
uzivatel Profil * |
#7 · Zasláno: 18. 5. 2007, 13:37:42
Joker: Aha, takže mi neprojde příspěvek. Jak tedy napsat regulární výraz aby mi prošlo "cokoliv text [cislo] dalsi text"
Mastodont: $zprava_z_db = preg_replace("(^([[0-9]*])$)", "číslo <strong>\0</strong>", $zprava_z_db); mi také nejde. (^(zpetnelomitko[[0-9]*zpetnelomitko])$) |
||
Mastodont Profil |
#8 · Zasláno: 18. 5. 2007, 13:39:28
uzivatel
Sorry, ale už joker naprosto jasně napsal: Problém asi bude, že ten výraz obsahuje i začátek a konec řetězce, tj. ^ a $. |
||
uzivatel Profil * |
#9 · Zasláno: 18. 5. 2007, 14:19:02
Dobře, odstranil jsem to. Vypadá to takto:
$zprava_z_db = preg_replace("([[0-9]|[1-9][0-9]])", "číslo <strong>\0</strong>", $zprava_z_db); A výsledek? číslo [31] označí se pouze první závorka [ a první část čísla. Nikoliv celé číslo. |
||
Mastodont Profil |
#10 · Zasláno: 18. 5. 2007, 14:34:23
No jistě, chybí ti tam kvantifikátor:
preg_replace("/&[([0-9]*)&]/", "číslo <strong>&&1</strong>", $zprava_z_db); namísto & dej zpětné lomítko |
||
uzivatel Profil * |
#11 · Zasláno: 18. 5. 2007, 15:04:57
Mastodont: Díky funguje. BTW začínám nenávidět regulární výrazy. Ještě že se toho dá hodně najít na netu (kontrola emailu, z http odkaz atd.)
|
||
bukaj Profil |
#12 · Zasláno: 18. 5. 2007, 19:26:05
uzivatel
a to je nenávidíš jen kvůli tomu, že je neumíš používat? :D |
||
Mastodont Profil |
#13 · Zasláno: 18. 5. 2007, 20:04:20
uzivatel
Jestli jedeš na Win, můžeš si pro trénink regulárů stáhnout třeba Regex Coach :-) http://weitz.de/regex-coach/ |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0