Avatar billede bronsholt Nybegynder
02. juni 2003 - 22:14 Der er 28 kommentarer og
1 løsning

Preg hex-værdier

Hvordan benytter man Preg-funktionen, hvis man ønsker at lede efter hex-værdier i stedet for tal/bogstaver? Kan man lede efter en "kombination", som eks. "45", som opfattes som én værdi?
Avatar billede schaefner Juniormester
02. juni 2003 - 22:18 #1
Hvad er det helt præcist du ønsker?
Avatar billede bronsholt Nybegynder
02. juni 2003 - 22:24 #2
$var = "45 4E F7 91"

Denne streng ønsker jeg f.eks at checke om "45 4E" findes vha. Preg.
Avatar billede schaefner Juniormester
02. juni 2003 - 22:28 #3
<?php
$var = '45 4EF7 91';
$var = str_replace(' ','',$var);

if (preg_match("/454E/i",$var)) {
    echo 'jep';
} else {
    echo 'no';
}
?>
Avatar billede eagleeye Praktikant
02. juni 2003 - 22:37 #4
Hvis man trækker det samme så vil den måske din "45 4E" forkert ? Hvis man har:
$var = "34 5E 4F"


<?php
$var = "45 4E F7 91";
if (preg_match("/45 4E/i",$var)) {
  echo "Findes";
} else {
  echo "Findes ikke";
}

?>
Avatar billede eagleeye Praktikant
02. juni 2003 - 22:38 #5
øh.  din = finde
Avatar billede bronsholt Nybegynder
02. juni 2003 - 22:51 #6
Kan godt se meningen med den, men den går ikke :-)

Der kan nemlig være flere kombinationer: f.eks:

$var1 = "45 4E"
$var2 = "65 6E"
$var3 = "45 6E"
$var4 = "65 4E"

eksempelvis... der er flere, men det må man da kunne med en "|" eller sådan noget?
Avatar billede eagleeye Praktikant
02. juni 2003 - 22:56 #7
Ja:


<?php
$var = "45 4E F7 91";
$var1 = "45 4F";
$var2 = "65 6E";
$var3 = "45 6E";
$var4 = "65 4E";
if (preg_match("/$var1|$var2|$var3|$var4/i",$var)) {
  echo "Findes";
} else {
  echo "Findes ikke";
}
?>
Avatar billede bronsholt Nybegynder
02. juni 2003 - 23:07 #8
Hvad hvis jeg vil have et/flere wildcard/joker med i preg_match-funktionen?
Avatar billede eagleeye Praktikant
02. juni 2003 - 23:12 #9
Du kan eksvis bruge * på en plads:

$var1 = "45 4*";
Avatar billede bronsholt Nybegynder
02. juni 2003 - 23:16 #10
Nej, for DE værdier er jo faste (altså hex-tegn), når det er en kombination, men jeg ved ikke, hvordan jeg skriver et wildcard sammen med?
Avatar billede eagleeye Praktikant
02. juni 2003 - 23:20 #11
Så er jeg ikke helt med?
Avatar billede bronsholt Nybegynder
02. juni 2003 - 23:38 #12
Nej, kan jeg egentlig godt forstå! :-)

2 eksempler på GODKENDTE strenge (altså som SKAL accepteres af preg):

$eks1 = "45 6E 56 23 F5 4E 34 45"
$eks1 = "65 6E 23 52 A3 43 68 AE"

hvor der skal checkes vha. variablerne fra før (ovenstående $var1, $var2 etc...) og RESTEN af strengen er "ligegyldig", altså er et wildcard...

Er det mere forståeligt? Jeg er EKSPERT i at forklare mig (uforståeligt) ;-)
Avatar billede eagleeye Praktikant
02. juni 2003 - 23:46 #13
Måske jeg stadig misforstår.. ;)

men det er lige meget hvad der står før og efter da den søger gennem hele strengen:

$eks1 = "en masse teskt her 45 6E 56 23 F5 4E 34 45og mere her"
Avatar billede bronsholt Nybegynder
02. juni 2003 - 23:48 #14
Ja, men hvis du kan give eksempler på disse to:

$eks1 = "en masse teskt her 45 6E 56 23 F5 4E 34 45og mere her"
$eks2 = "45 6E 56 23 F5 4E 34 45og mere her"

vil det være helt perfekt :-)
Avatar billede eagleeye Praktikant
02. juni 2003 - 23:50 #15
Dette er samme kode som sidst hvor $var er rettet til $eks1

<?php
$eks1 = "en masse teskt her 45 6E 56 23 F5 4E 34 45og mere her"
$var1 = "45 4F";
$var2 = "65 6E";
$var3 = "45 6E";
$var4 = "65 4E";
if (preg_match("/$var1|$var2|$var3|$var4/i",$eks1)) {
  echo "Findes";
} else {
  echo "Findes ikke";
}
?>
Avatar billede bronsholt Nybegynder
02. juni 2003 - 23:54 #16
Hvor er der wildcard der???
Avatar billede eagleeye Praktikant
02. juni 2003 - 23:57 #17
Den søger efter det som er angivet her "/$var1|$var2|$var3|$var4/i"
Det bliver til en liste "45 4F|65 6E|45 6E|65 4E"
Så den søger hele strengen $eks1 igennem for 45 4F,  65 6E, 45 6E og 65 4E.
Avatar billede bronsholt Nybegynder
03. juni 2003 - 00:03 #18
Ja, det kan jeg godt se. MEN det bliver efterfulgt at noget andet... svært for mig at forklare helt. Kan du give et eksempel på, hvor jeg laver en søgning som før, men efterfulgt af et wildcard og så efterfulgt af endnu en variabel?
Avatar billede eagleeye Praktikant
03. juni 2003 - 00:11 #19
Du kan sætte to variable sammen, men jeg er stadig ikke med på wildvard??


<?php
$eks1 = "en masse teskt her 45 6E 56 23 F5 4E 34 45og mere her";
$eks2 = "45 6E 56 23 F5 4E 34 45og mere her";

$var1 = "45 4R";
$var2 = "65 6D";
$var3 = "45 6E";
$var4 = "23 F5";
if (preg_match("/$var1|$var2|$var3|$var4/i","$eks1$eks2")) {
  echo "Findes";
} else {
  echo "Findes ikke";
}
?>
Avatar billede bronsholt Nybegynder
03. juni 2003 - 00:14 #20
Nej, det er ikke sådan... Der skal et wildcard ind i søgestengen. Hmmm...
Avatar billede eagleeye Praktikant
03. juni 2003 - 00:17 #21
Når du skriver søgestreng hvad mener du så?
Avatar billede bronsholt Nybegynder
03. juni 2003 - 00:19 #22
("/$var1|$var2|$var3|$var4/i"
Avatar billede eagleeye Praktikant
03. juni 2003 - 00:26 #23
Hvad skal den finde?
Avatar billede eagleeye Praktikant
03. juni 2003 - 00:27 #24
eks som finde to tal efter hinadnden "23 34"

$var5 = "[\d\d] [\d\d]";
Avatar billede bronsholt Nybegynder
03. juni 2003 - 07:31 #25
Hvis jeg nu ikke ved, hvor mange "to tal efter hinanden", der er, fordi det antal kan ændre sig, hvordan skriver jeg så:

(noget lign.:)
if (preg_match("/$var1|$var2|$var3|$var4[x antal hextal][$var10][x antal hextal][$var11]/i")){
bla bla
}....
Avatar billede eagleeye Praktikant
03. juni 2003 - 09:00 #26
X antal hex tal "4E" eller "5F" kan skrives som "[A-F01-9]{2}+"

Men jeg for står står ikke helt hvad du vil med det, da den jo er ligeglad med om der er 100 karakter/tal eller 6 karakte/tal. Kan du evt komme med et eks på hvad du mener¨?
Avatar billede bronsholt Nybegynder
03. juni 2003 - 09:15 #27
Go' morgen eagleeye,

jeg har fundet en løsning, som jeg bestemt godt kan bruge :-) Så for en orden skyld, så kommer koden her:

$var = "45 4e 61 62 20 70 20 6c 61 73 73 65"
$var0 = "20"; //space
$var1 = "45 4E 41"; //ENA
$var2 = "45 4E 61"; //ENa
$var3 = "45 6E 41"; //EnA
$var4 = "45 6E 61"; //Ena
$var5 = "65 4E 41"; //eNA
$var6 = "65 4E 61"; //eNa
$var7 = "65 6E 41"; //enA
$var8 = "65 6E 61"; //ena
$var9 = "50"; //P
$var10= "70"; //p

if (preg_match("/[$var1|$var2|$var3|$var4|$var5|$var6|$var7|$var8](.*)$var0(.*)$var0/", $var){
bla bla...
}

hvor (.*) står for, at der kan være HVILKE som helst tegn, INDTIL der kommer et $var0, og det er fint til det, jeg skal bruge det til :-)

Selvom jeg selv fandt den rigtige løsning, har du hjulpet mig så lang på vej, at jeg giver dig pointene, smo tak for hjælpen...
Avatar billede bronsholt Nybegynder
03. juni 2003 - 09:16 #28
Altså hvis du lige smidder et svar ind :-)
Avatar billede eagleeye Praktikant
03. juni 2003 - 14:30 #29
Ok ;) jeg smider da gerne et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester