Autor | Zpráva | ||
---|---|---|---|
Meldo Profil |
#1 · Zasláno: 9. 10. 2006, 02:56:40
Mám nasledujúci regulérny výraz:
Všetko funguje ako má až nato, že ak mám v texte viac ako jeden odkaz, oznaci to jeden a velku cast textu ignoruje. Proste ani nevypise. Ako to upraviť, aby to bralo koľko koľvek odkazov? |
||
Retal Profil |
#2 · Zasláno: 9. 10. 2006, 09:10:57
Ungreedy pro celý výraz:
$vzor = '|\[URL:([^"]+)\](.*)\[/URL\]|U'; |
||
Meldo Profil |
#3 · Zasláno: 9. 10. 2006, 11:17:24
Retal
Jasne. To je presne ono. Ešte sa chcem spýtať všeobecne k regulernym vyrazom. Keď porovnavam nejaky retazec so vzorom, može byť v tom vzore aj dlhy text( napr. 50 000 slov)? Neni to pomale? Alebo sa to robi inak? |
||
Retal Profil |
#4 · Zasláno: 9. 10. 2006, 11:41:43
Pokud víš, jak vypadá začátek a konec hledaného řetězce, vyhledal bych jej podle toho.
|
||
Meldo Profil |
#5 · Zasláno: 9. 10. 2006, 11:45:18
Retal
Ano viem. Chcem to pouzivat pri wysivyg editore. |
||
Retal Profil |
#6 · Zasláno: 9. 10. 2006, 11:55:25
Nerozumím, k čemu to potřebuješ?
|
||
Meldo Profil |
#7 · Zasláno: 9. 10. 2006, 12:05:23
Retal
No taky ten editor jak je tu ked pridavas komentar. Hrube pismo, odkaz apod. Asi sa to pise inak, ako som to ja napisal. :-)) |
||
Retal Profil |
#8 · Zasláno: 9. 10. 2006, 12:37:22
Aha, ty nemyslíš, že těch 50 000 slov bude ve vzoru, ale ve zpracovávaném řetězci. No tak to je samozřejmě v pohodě.
|
||
Lolita Profil |
#9 · Zasláno: 9. 10. 2006, 20:32:10 · Upravil/a: Lolita
Zkusim se prizivit na tvym threadu, zkusil sem ukrast tvuj kod
mam text zhuba tohle [code]tancovala zizala[/code] na paloucku ... [code] ze ji hral dala[/code] kousek vdolku kod mam tenhle (je ve forcyklu a normalni str_replace jde ....) $vzor = '|\[code\](.*?)\[/code\]|U'; $nahradenie = '<pre>$1</pre>'; $rs[$i]["answer"] = preg_replace($vzor, $nahradenie, $rs[$i]["answer"]); ale me to samozrejme nefunguje. Proste to uplne klidne vynecha prvni vyskyt atd. Mimochodem nejaky detailni jednoduchy prehled co presne co u regexpu dela vcetne subvyrazu existuje? A pak nejaky dobry testovaci program na to, regulator moje lame vyrazy nebere (: EDIT: tak koukam, ze zrovna na prikladu co sem dal to jde, ale v mi strance to realne nejde, super no \: Nechapu co tomu vadi na \n v textu a jak to resit ): |
||
Retal Profil |
#10 · Zasláno: 9. 10. 2006, 20:49:56
Lolita
Předpokládám problém v tom, že tvůj reálný text obsahuje konce řádků. Přidej ke vzoru parametr "s". $vzor = '|\[code\](.*?)\[/code\]|sU'; Používám referenční přehled na PHP http://cz2.php.net/manual/en/reference.pcre.pattern.syntax.php http://cz2.php.net/manual/en/reference.pcre.pattern.modifiers.php Ale jestli hledáš návod, budeš se muset porozhlédnout jinde. |
||
Lolita Profil |
#11 · Zasláno: 9. 10. 2006, 20:52:00
Dik super, dokonce ty modifiers a syntax sou co sem hledal, na to cumim v manualu, ale nekliknu, celej ja no. Ale s takovouhle treba casem i pochopim preg_replace_callback (:
|
||
Meldo Profil |
#12 · Zasláno: 9. 10. 2006, 22:13:51
Lolita
Ak mas taky jednoducu znacku [code], [b] a pod. je lepsie pouzit str_replace(). Pohladaj si v manuale. Je to omnoho jednoduchsie pouzit. |
||
djlj Profil |
#13 · Zasláno: 10. 10. 2006, 00:13:40
Meldo
Ale je to k ničemu. Když někdo ten tag jen otevře a už neuzavře, tak máš problém ;). |
||
Meldo Profil |
#14 · Zasláno: 10. 10. 2006, 00:15:20
djlj
tak ale to je len jeho chyba. Ked tu zadavam prispevok a zle uzavrem tak napr pri odkaze, odkaz sa zobrazi zle. A je to moja chyba. |
||
krteczek Profil |
#15 · Zasláno: 10. 10. 2006, 00:33:54
Meldo: no pokud budeš mit takto primiivně udělaný vzkaznik tak ti rozloží někdo stránku ani nebudeš vědět jak... a je to chyba programátora! nemužeš chtit aby lidi věděli že je třeba tagy uzavírat...
krteczek |
||
zivan Profil |
#16 · Zasláno: 10. 10. 2006, 08:35:27
No to asi zalezi na tom, co od nich jako autor chces. Pokud nekdo chce pouzivat tagy, tak at je taky umi uzavirat.
|
||
Meldo Profil |
#17 · Zasláno: 10. 10. 2006, 11:22:27
krteczek
Mas pravdu. Ale ak uzivatel klikne na tlacidlo ktore mu hodi do okienka [pre][/pre] a on vymaze koncovy tag tak to neni moj problem. To je uzivatelova blbost. |
||
krteczek Profil |
#18 · Zasláno: 10. 10. 2006, 13:44:11
Meldojenže když někdo přijde na stránku a uvidí ji rozpadlou asi těško bude obvinovat uživatele ale webmastra... proto webmaster zodpovídá za stránku, platí pravidlo:
uživatel udělá chybu => webmastre uděll chybu (neudělal to blbuvzdorne) . |
||
Anonymní Profil * |
#19 · Zasláno: 10. 10. 2006, 15:03:45
Me jde jeste o to, jak to v tom regexpu udelat na
[code](.*)[/code] v tom pripade pouzi deafaultni autoit jako $1 nebo [code=(*.)](.*)[/code] v tom pripade pouzij $1 zadany a $2 zdany - mohl bych to resit jako [code(*.?)](.*)[/code] a pak bud jedna bude nebo ne a pak z ni replacnout = na nic, ale to me neprijde jako spravne reseni. Za rady predem dekuji. Pouzivam preg replace callback s tim ze nemuze nastat pripada kdy bude v [code] jeste jeden [code] - tj. neco jako [code]dfa[code]asfsda[/code]afada[/code]. |
||
Časová prodleva: 3 dny
|
|||
djlj Profil |
#20 · Zasláno: 13. 10. 2006, 10:41:36
on vymaze koncovy tag tak to neni moj problem
Až se ti rozhodí layout, tak to bude tvůj problém ;). |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0