Powiedzmy ze mam posrodku tekstu napis 'gogulas', chcialbym wziac 30 znakow przed i 30 znakow po tym napisie, jak to uczynic?
mam tylko cos takiego
#([*]{30})gogulas([*]{30})#
niestety nie hasa.
Powiedzmy ze mam posrodku tekstu napis 'gogulas', chcialbym wziac 30 znakow przed i 30 znakow po tym napisie, jak to uczynic?
mam tylko cos takiego
#([*]{30})gogulas([*]{30})#
niestety nie hasa.
dlaczego to Twoje nie działa?[*] to oznacza zbiór znaków a w tym zbiorze zawiera sie tylko jeden znak * boKod php:
<?php
$string="abcdefghijklmnouprstuwxyzironekabcdefghijklmnouprstuwxyz";
preg_match_all("#(.{10})ironek(.{10})#",$string,$a);
print_r($a);
?>
Wewnątrz nawiasów kwadratowych należy cytować znaki -, backslash \, znak ^ (o ile występuje jako pierwszy) oraz nawias zamykający ]. Pozostałych znaków mających specjalne znaczenie w wyrażeniach regularnych, czyli np. +, *, (, ), {, }, ^ czy $ nie cytuj wewnątrz nawiasów kwadratowych.
pozdrawiam
Ostatnio edytowane przez ironwall : 05-29-2008 - 23:50
w perlu
Kod:$string =~ /(.{30})gogulas(.{30})/; print "Przed $1, po $2";
ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)
Mi sie troche nie podoba jak preg_match zwraca wyniki, straszny smietnik, powinny byc na to flagi, samo wrzucenie tego co chemy w kolejny nawias nie zalatwia do konca sprawy.
Zapomnialem podziekowac za pomoc.
Tak wiec dziekuje
Ostatnio edytowane przez gogulas : 05-30-2008 - 00:52
do tego jest tzw przechwytywanie nazwane , w tym celu stosuje się ?P<nazwa>
naprzyklad
Kod php:
<?php
$string="abcdefghijklmnouprstuwxyzironekabcdefghijklmnouprstuwxyz";
preg_match("#(?P<ciag1>.{10})ironek(?P<ciag2>.{10})#",$string,$a);
echo $a['ciag1'];
echo "</br></br>".$a['ciag2'];
?>