Autor Zpráva
nethor
Profil
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
nethor:
Z hlavy:

(\d+)|((st\.)? \d+(\/\d+)?)
nethor
Profil
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
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é.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: