Bekijk Volledige Versie : [PHP] regexp gevraagd
Jan Smeelen
19/08/03, 18:30
Ik ben niet sterk in regexps,
daarom dus weer een beroep op
de experts hier in de niewsgroep :o)
Via een file upload script kan een klant
zélf plaatjes uploaden.
Echter de klant werkt met franstalige beschrijvingen,
en worden er nu plaatjes geupload met
oa de naam : Bétaillère.JPG
maar ook plaatjes met de naam : cav.-1.jpg
en cav 1.jpg
ik kan uiteraard met str_replace de spaties e.d.
weghalen, maar ik denk dat het met een preg_replace
veel beter kan ?!
Ik zoek dus een regexp om de vreemde tekens
zoals é en è te veranderen in normale tekens
in dit geval dus "e" en diezelfde regexps zou
ook de "." voor de ".jpg" moeten kunnen filteren
alsook de spaties en andere vreemde zaken.
Wie van de experts hierin kan me helpen ? :o))
Bedankt alvast !
Jan.
Daniel Tryba
19/08/03, 20:45
Jan Smeelen <smeelen@friaco.nl> wrote:
> oa de naam : B?taill?re.JPG
> maar ook plaatjes met de naam : cav.-1.jpg
> en cav 1.jpg
>
> ik kan uiteraard met str_replace de spaties e.d.
> weghalen, maar ik denk dat het met een preg_replace
> veel beter kan ?!
Waarom denk je dat? Een str_replace is over het algemeen
sneller/efficienter dan een regexp.
> Ik zoek dus een regexp om de vreemde tekens
> zoals ? en ? te veranderen in normale tekens
> in dit geval dus "e"
Er is geen relatie tussen vage tekens en ascii. Als je niet ascii tekens
wil omlullen naar wat jij als ascii waarde daarvoor in de plaats wilt
zien zul je dat zelf moeten regelen. Op
http://nl2.php.net/manual/en/function.str-replace.php staat een
voorbeeld wat je kan gebruiken (kerxen at caramail dot com Eddy Cingala
02-Jul-2003 11:02)
> en diezelfde regexps zou ook de "." voor de ".jpg" moeten kunnen
> filteren alsook de spaties en andere vreemde zaken.
Ook hier zijn de gewonen string manipulatie functies wellicth nuttiger,
een str_replace in combo met substr en strrpos:
str_replace('.','',substr($str,0,strrpos($str,'.')-strlen($str)));
oid.
BTW Waarom zou je je druk maken over de namen van files?
--
Daniel Tryba
Jan Smeelen
20/08/03, 00:00
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bhtqqt$m5l$1@news.tue.nl...
> Jan Smeelen <smeelen@friaco.nl> wrote:
> > oa de naam : B?taill?re.JPG
> > maar ook plaatjes met de naam : cav.-1.jpg
> > en cav 1.jpg
>
> BTW Waarom zou je je druk maken over de namen van files?
Omdat een plaatje met de naam B (e met schuinstreepje erop) taillere.JPG
niet weergegeven wordt in de browser :(
Mogelijk dat ik dat eventueel ook kan oplossen met
een urlencode(), daar heb ik nog niet naar gekeken...
Maar mooier vind ik hetzelf om de naam te converteren.
Ik dacht zelf dat het met 1 regexps zou kunnen, en ik zodoende
niet alle speciale tekens apart hoef te laten replacen.
Op die manier hoef ik dan ook niet te twijfelen of ik speciale
tekens vergeten ben ;o)
Bedankt i.i.g. voor je reply,
Jan.
Daniel Tryba
20/08/03, 00:15
Jan Smeelen <smeelen@friaco.nl> wrote:
>> > oa de naam : B?taill?re.JPG
>> > maar ook plaatjes met de naam : cav.-1.jpg
>> > en cav 1.jpg
>>
>> BTW Waarom zou je je druk maken over de namen van files?
>
> Omdat een plaatje met de naam B (e met schuinstreepje erop) taillere.JPG
> niet weergegeven wordt in de browser :(
En welke charset meldt je pagina te zijn en wat staat er in de source?
> Mogelijk dat ik dat eventueel ook kan oplossen met
> een urlencode(), daar heb ik nog niet naar gekeken...
Je moet de naam bij het tonen "html" escapen (htmlentities) en bij het
linken urlencoden (urlencode)
> Ik dacht zelf dat het met 1 regexps zou kunnen, en ik zodoende
> niet alle speciale tekens apart hoef te laten replacen.
>
> Op die manier hoef ik dan ook niet te twijfelen of ik speciale
> tekens vergeten ben ;o)
Je moet altijd twijfelen aan de input van users.
--
Daniel Tryba
Jan Smeelen
20/08/03, 01:00
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bhu73n$oeh$1@news.tue.nl...
> Jan Smeelen <smeelen@friaco.nl> wrote:
> >> > oa de naam : B?taill?re.JPG
> >> > maar ook plaatjes met de naam : cav.-1.jpg
> >> > en cav 1.jpg
> >>
> >> BTW Waarom zou je je druk maken over de namen van files?
> >
> > Mogelijk dat ik dat eventueel ook kan oplossen met
> > een urlencode(), daar heb ik nog niet naar gekeken...
>
> Je moet de naam bij het tonen "html" escapen (htmlentities) en bij het
> linken urlencoden (urlencode)
>
> > Ik dacht zelf dat het met 1 regexps zou kunnen, en ik zodoende
> > niet alle speciale tekens apart hoef te laten replacen.
> >
> > Op die manier hoef ik dan ook niet te twijfelen of ik speciale
> > tekens vergeten ben ;o)
>
> Je moet altijd twijfelen aan de input van users.
Ik bedoelde eigenlijk : twijfelen aan mezelf bij het scripten,
of ikzelf geen speciale tekens in de str_replace
vergeten zou zijn ;o)
Bedankt voor je reply !
Jan.
Daniel Tryba
20/08/03, 01:45
Jan Smeelen <smeelen@friaco.nl> wrote:
>> > Op die manier hoef ik dan ook niet te twijfelen of ik speciale
>> > tekens vergeten ben ;o)
>>
>> Je moet altijd twijfelen aan de input van users.
>
> Ik bedoelde eigenlijk : twijfelen aan mezelf bij het scripten,
> of ikzelf geen speciale tekens in de str_replace
> vergeten zou zijn ;o)
Dat is dan ook een goede reden om van de filenamen af te blijven. Voor
iso-8859-x is de conversie nog wel te overzien (dat zijn maar 256
characters en ongeveer de helft is niet eens printable), als je andere
character sets gebruikt wordt het natuurlijk al weer wat moeilijker
(zoniet onmogelijk).
--
Daniel Tryba
Jan Smeelen
20/08/03, 01:45
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bhuc8c$pl4$1@news.tue.nl...
> Jan Smeelen <smeelen@friaco.nl> wrote:
> >> > Op die manier hoef ik dan ook niet te twijfelen of ik speciale
> >> > tekens vergeten ben ;o)
> >>
> >> Je moet altijd twijfelen aan de input van users.
> >
> > Ik bedoelde eigenlijk : twijfelen aan mezelf bij het scripten,
> > of ikzelf geen speciale tekens in de str_replace
> > vergeten zou zijn ;o)
>
> Dat is dan ook een goede reden om van de filenamen af te blijven. Voor
> iso-8859-x is de conversie nog wel te overzien (dat zijn maar 256
> characters en ongeveer de helft is niet eens printable), als je andere
> character sets gebruikt wordt het natuurlijk al weer wat moeilijker
> (zoniet onmogelijk).
Je hebt gelijk ! :o)
Wél ga ik de eventuele "." verwijderen voor de .jpg als die
er extra instaan, maar voor de rest blijf ik van de filenamen af.
Bedankt,
Jan.
Maarten Wierda
23/08/03, 13:15
Jan Smeelen wrote:
[...]
> Ik zoek dus een regexp om de vreemde tekens
> zoals é en è te veranderen in normale tekens
> in dit geval dus "e" en diezelfde regexps zou
> ook de "." voor de ".jpg" moeten kunnen filteren
> alsook de spaties en andere vreemde zaken.
Ik zit net een klasse te bekijken op <http://www.phpclasses.org/>,
genaamd 'EasyUpload' en daarin bevindt zich een functie die voor jou wel
eens interessant zou kunnen zijn:
function InvalidCaracter($var)
{
$a="ÁáÉéÍíÓóÚúÇçÃãÀàÂâÊêÎîÔôÕ õÛû&-!@#$%¨&*()_+}=}{[^~?/:;><,";
$b="AaEeIiOoUuCcAaAaAaEeIiOoOoUue_____________________ _______";
$var = strtr($var,$a,$b);
$var = strtolower($var);
return $var;
}
Succes.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."