Gå til innhold

Erstatte først ord + regulære uttrykk


Anbefalte innlegg

Finnes det noen funksjon som er virker på samme måte som str_replace, men at man kan legge til begrensninger i hvor mange ganger den skal erstatte strengen?

 

Eks:

<?php
$limit = 1;

$text = str_replace('PHP', NULL, 'PHP ASP PERL CGI PHP ASP PERL CGI PHP ASP PERL CGI', $limit);
?>

 

$text blir da ASP PERL CGI PHP ASP PERL CGI PHP ASP PERL CGI (PHP er fjernet i førsten av $text)

Endret av simenss
Lenke til kommentar
Videoannonse
Annonse
  • 1 måned senere...

Flags, f.eks.:

/PHP/i betyer case insensitive, da ser den etter både php og PHP

/g = global

/x = extended

/s = dotall

/m = multiline

Hvis du vil lære deg regex er google.com er bra sted å begynne. Søk etter regex tutorial. Grunnen til at refererer deg til google.com er at jeg personlig synes ikke det finnes et absolutt beste sted å lære regex. Det kommer med eksempler og trening.

Lenke til kommentar

Har sett i noen funksjoner (f.eks. str_replace) at noen bruker merkelige tegn som [@*^] (dette er kun et eksempel). Hva er alle disse tegnene godt for?

 

 

EDIT: Takker ????? (får ikke skrevet 8 spørsmålstegn), skal se litt nærmere på dette :)

Endret av simenss
Lenke til kommentar

I str_replace() betyr de ingen ting annet enn de tegnene, men i alle regex funksjoner som ereg() og preg...() så betyr de litt av hvert.

[a-z] betyr alle bokstaver mellom a og z

^ betyr først, men kan også bety ikke.

* betyr 0 eller fler, f.eks. [0-9]* betyr at det enten er ingen, en eller flere tall mellom 0 og 9 etter hverandre.

 

Listen er lang, tror flere inkl. meg har skrevet en liten guide med noen eksempler her på forumet - de funner den hvis du søker.

 

Se også:

http://no2.php.net/manual/en/reference.pcr...tern.syntax.php

http://www.regularexpressions.info/

http://zvon.org/other/PerlTutorial/Output/index.html

http://www.regexlib.com/

Lenke til kommentar

([0-9a-zA-Z]+[-._+&])*

 

Se litt nærmere på den. Der står alt innenfor (), med * som betyr at det finne 0, 1 eller flere av dette der.

 

Dvs den leter etter 0-9a-z+ så regner den med å finne noen av de tegnene, så står det * utenfor ), det betyr at mønsteret kan gjenta seg.

 

[0-9a-zA-Z]+

betyr at aaabbb000111 validerer

 

[-._+&] betyr at de tegnene validerer.

 

Hadde det ikke stått noen )* der så hadde du hatt rett.

Lenke til kommentar

Denne skal vel funke:

<?php
$var = 'min_tekst';

if(ereg("^(([0-9a-zA-Z]+[-._+&])*){5,15}[0-9a-zA-Z]+$", $var)) {
print('TRUE');
} else {
print('FALSE');
}
?>

Som da betyr at -._+& ikke nødvendigvis trenger å komme etter 0-9a-zA-z, ettersom jeg har fortsått.

Lenke til kommentar
<?php

$var = 'min_tekst';

 

if(ereg("^(([0-9a-zA-Z]+[-._+&])*){5,15}[0-9a-zA-Z]+$", $var)) {

print('TRUE');

} else {

print('FALSE');

}

?>

 

må man ikke escape . (dot) om man bare vil ha punktum med i strengen man søker i? php.net: . match any character except newline (by default)

 

samme med + den betyr jo en eller flere, om den ikke escapes ( \+ )

 

så ville ikke koden bli

<?php
$var = 'min_tekst';

if(ereg("^(([0-9a-zA-Z]+[-\._\+&])*){5,15}[0-9a-zA-Z]+$", $var)) {
print('TRUE');
} else {
print('FALSE');
}
?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...