Autor | Zpráva | ||
---|---|---|---|
Matess Profil * |
#1 · Zasláno: 29. 1. 2015, 16:49:47
Dobrý den,
potřeboval bych reg. výraz, který vybere vše co je mezi kulatýma závorkama a pokud možno včetně těch závorek. Mám podobné texty: (-254) Nevím co je to za text (testovací) (+28) Test stránky (tady je vložený mezitext) (zde je nesmyslně dlouhý text) (0) Soubor:dai.jpg (toto by mohlo fungovat.) A já potřebuji vybrat to co je tučně. Lze to nějak? Děkuji za odpovědi. |
||
Dan Charousek Profil |
#2 · Zasláno: 29. 1. 2015, 16:56:47
$str = '(-254) Nevím co je to za text (testovací) (+28) Test stránky (tady je vložený mezitext) (zde je nesmyslně dlouhý text) (0) Soubor:dai.jpg (toto by mohlo fungovat.)'; preg_match_all("~\(.*?\)~", $str, $matches); var_dump($matches); |
||
Matess Profil * |
#3 · Zasláno: 31. 1. 2015, 09:21:09
Dan Charousek:
Funguje perfektně. Děkuji. Ještě jeden malý dotaz. Co kdybych chtěl vypsat pouze text, který není v závorkách? |
||
juriad Profil |
#4 · Zasláno: 31. 1. 2015, 09:29:20
Tak si všechny závorky z textu vyhodíš. Pozor na to, že ti zbydou mezery kolem závorek (ale to bys musel přesně popsat, kdy se která mezera má také odstranit).
preg_replace("~\(.*?\)~", "", $str); |
||
Matess Profil * |
#5 · Zasláno: 31. 1. 2015, 09:39:29
juriad:
To by mohlo být ono. Děkuji. |
||
joe Profil |
#6 · Zasláno: 31. 1. 2015, 18:51:22
S RE se vůbec nekamarádím, může prosím někdo vysvětlit, proč je v něm ten otazník a bez něj to "nefunguje"? Díky
|
||
Dan Charousek Profil |
#7 · Zasláno: 31. 1. 2015, 18:53:33
joe:
Otazník říká, aby se vzal pouze nejmenší počet znaků, které podmínku splňují. Podmínka v tomhle případě je, že se nachází v kulatých závorkách. Jenže pokud by tam nebyl otazníček tak dostaneš tohle: Text (neco) asdas lorem ipsum (dolor) sit amet dalsi v (zavorce) Zvýrazněný text také odpovídá podmínce. Proto ten otazníček. |
||
joe Profil |
#8 · Zasláno: 31. 1. 2015, 19:08:16
Dan Charousek:
Díky :) |
||
Keeehi Profil |
#9 · Zasláno: 31. 1. 2015, 19:35:52
Ještě doplním, že reguláry mají tu nádhernou vlastnost, že jedna věc jde napsat různými způsoby. Tudíž by se dalo použít
"~\(.*\)~U" // místo ? jsem použil modifikátor U který dělá to samé jako otazník "~\([^)]*\)~" // místo . je tu teď [^)] které říká - jakýkoliv znak kromě ) - pak je jedno, zda je * žravá či ne |
||
Časová prodleva: 9 let
|
0