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?
Annonceindlæg fra Infor
Hvad er det helt præcist du ønsker?
$var = "45 4E F7 91" Denne streng ønsker jeg f.eks at checke om "45 4E" findes vha. Preg.
<?php $var = '45 4EF7 91'; $var = str_replace(' ','',$var); if (preg_match("/454E/i",$var)) { echo 'jep'; } else { echo 'no'; } ?>
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"; } ?>
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?
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"; } ?>
Hvad hvis jeg vil have et/flere wildcard/joker med i preg_match-funktionen?
Du kan eksvis bruge * på en plads: $var1 = "45 4*";
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?
02. juni 2003 - 23:20
#11
Så er jeg ikke helt med?
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) ;-)
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"
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 :-)
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"; } ?>
02. juni 2003 - 23:54
#16
Hvor er der wildcard der???
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.
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?
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"; } ?>
03. juni 2003 - 00:14
#20
Nej, det er ikke sådan... Der skal et wildcard ind i søgestengen. Hmmm...
03. juni 2003 - 00:17
#21
Når du skriver søgestreng hvad mener du så?
03. juni 2003 - 00:19
#22
("/$var1|$var2|$var3|$var4/i"
03. juni 2003 - 00:26
#23
Hvad skal den finde?
03. juni 2003 - 00:27
#24
eks som finde to tal efter hinadnden "23 34" $var5 = "[\d\d] [\d\d]";
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 }....
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¨?
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...
03. juni 2003 - 09:16
#28
Altså hvis du lige smidder et svar ind :-)
03. juni 2003 - 14:30
#29
Ok ;) jeg smider da gerne et svar.
Vi tilbyder markedets bedste kurser inden for webudvikling