Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
#1 · Zasláno: 26. 3. 2018, 16:24:17
Zdravím, nedaří se mi sestavit ragulár pro vyzobání čísel parcel z textu:
// čísla parcel mohou mít tvar: 5416 || st. 5416 || 5416/456 || st. 5416/456 $Nemovitost = "jednotka č. 25490001, byt v budově č.p. 2546, 2545, 2547, 2548, 2549, část obce Zelené Předměstí, na parcele st. 5414 Pardubice, st. 5415 Pardubice (součástí je stavba č.p. 2546, 2545, 2547, 2548, 2549, čst obce Zelené Předměstí), st. 5416 Pardubice, st. 5417 Pardubice, st. 5418 Pardubice, podl na společnch čstech domu a pozemku 82/10000" ; if(preg_match_all('~((st\. (\d+))(( \D+)*,))*~i', $Nemovitost , $Arr)) { echo "<xmp>"; var_dump($Arr); echo "</xmp>"; } Co dělám špatně , jak na to? |
||
Kcko Profil |
#2 · Zasláno: 26. 3. 2018, 16:59:50
nethor:
Z hlavy: (\d+)|((st\.)? \d+(\/\d+)?) |
||
nethor Profil |
#3 · Zasláno: 27. 3. 2018, 09:18:36
No jo , ale to vyhledává všechna čísla, i 25490001 a 82/10000.
Rozchodil jsem to s WorkAround: $Nemovitost = preg_replace("~(jednotka .*, na parcele)~i","",$Nemovitost); $Nemovitost = preg_replace("~(\(součástí je stavba .*\))~i","",$Nemovitost); $Nemovitost = preg_replace("~(podl na společnch čstech.*)~i","",$Nemovitost); if(preg_match_all('~((st\. )?\d+(\/\d+)?)~i', $Nemovitost , $Arr)) { echo "<xmp>"; var_dump($Arr); echo "</xmp>"; } PS: Nejde mi do hlavy ten escape lomítka: (\/\d+)? , chodí to s ním i bez něj. |
||
juriad Profil |
#4 · Zasláno: 27. 3. 2018, 09:26:28
nethor:
Ano, ten escape lomítka není nutný, pokud uzavřeš celý výraz mezi ~. Kdybys však napsal: '/((st\. )?\d+(\/\d+)?)/i' , tak by escapování bylo nutné.
|
||
Časová prodleva: 5 let
|
0