Rudde Skrevet 4. september 2012 Del Skrevet 4. september 2012 Hei, Har et problem med en kode her, får ikke mitt RegEx til å virke tilstrekkelig når det er i bruk spesielle tegn som "=" og "<" og det fungerer ikke å putte \ forran de. $source = "Randomtext<a href=\"test.php\">some text</a>rtext"; preg_match_all("/<a href=/", $source, $out); echo var_dump($out); Output = array(1) { [0]=> array(1) { [0]=> string(8) " og hvis jeg endrer "/<a href=/" til "/a href/" blir dette output: array(1) { [0]=> array(1) { [0]=> string(6) "a href" } } Hva skal jeg gjøre? o_O Lenke til kommentar
Ernie Skrevet 4. september 2012 Del Skrevet 4. september 2012 Hva er i grunn poenget med å bruke regulære uttrykk her? Man skulle jo tro strpos fungerer bra her. Uansett, escapetegnet i regex er \ ev. kan man bruke preg_quote også. Lenke til kommentar
Rudde Skrevet 4. september 2012 Forfatter Del Skrevet 4. september 2012 Det der er ett eksempel på hvor jeg ikke får det til å fungere. Og som du ser kreves det ikke noe escape i eksempelet. Lenke til kommentar
Crowly Skrevet 4. september 2012 Del Skrevet 4. september 2012 For spørre dumt, har du husket å sjekke kildekoden i nettleseren? For <a href= vil jo ikke vises siden det er html Jeg får array(1) { [0]=> array(1) { [0]=> string(8) "<a href=" } } med preg_match_all("/<a href=/", $source, $out); Lenke til kommentar
Ernie Skrevet 4. september 2012 Del Skrevet 4. september 2012 Det der er ett eksempel på hvor jeg ikke får det til å fungere. Og som du ser kreves det ikke noe escape i eksempelet. Sist jeg sjekket var nå både < og = spesialtegn i regex. Kjører du det igjennom preg_quote så blir < til \< og = til \= iallfall Lenke til kommentar
Rudde Skrevet 4. september 2012 Forfatter Del Skrevet 4. september 2012 Ja har sjekket i nettleser, vet dette fungerte før da jeg har brukt det før og baserer den nye koden på en eldre kode jeg har skrevet som fungerte glimrende i sin tid. Men siden jeg bruker den mot har endret system og jeg må rekode det. < og = er ikke regnet som spesialtegn, for å teste teorien kan du teste den på http://regjex.com/ der fungerer alt ved stringen min, men ikke når jeg kjører det gjennom php her og aner ikke hvorfor. Ja har prøvd å escape disse tegnene men det hjelper ikke. Lenke til kommentar
Ernie Skrevet 4. september 2012 Del Skrevet 4. september 2012 < og = er ikke regnet som spesialtegn, for å teste teorien kan du teste den på http://regjex.com/ der fungerer alt ved stringen min, men ikke når jeg kjører det gjennom php her og aner ikke hvorfor. Ja har prøvd å escape disse tegnene men det hjelper ikke. Nei, det kan nok godt hende det ikke er nødvendig når de ikke bruker i rett kontekst, men at de ikke er spesialtegn er sludder og vås. Noen gang hørt om «assertions» når det kommer til regulære uttrykk? F.eks. er «lookbehind assertion» ?<= preg_match("/(?<=foo)bar/", "foobar", $out); var_dump($out); Ergo, det er spesialtegn Lenke til kommentar
Rudde Skrevet 4. september 2012 Forfatter Del Skrevet 4. september 2012 joa, men mente det ikke var nødvendig. Uansett det løser ikke problemet mitt og jeg skjønner faen ikke hva som er bugga med php her :S Noen som har en anelse? Lenke til kommentar
Ernie Skrevet 4. september 2012 Del Skrevet 4. september 2012 joa, men mente det ikke var nødvendig. Uansett det løser ikke problemet mitt og jeg skjønner faen ikke hva som er bugga med php her :S Noen som har en anelse? Det spørs jo hva du forventer da. Koden i første post gir hos meg: array(1) { [0]=> array(1) { [0]=> string(8) "<a href=" } } Lenke til kommentar
Rudde Skrevet 4. september 2012 Forfatter Del Skrevet 4. september 2012 array(1) { [0]=> array(1) { [0]=> string(7) " Den gir meg det :S Hvilken versjon av php og apache kjører du? Lenke til kommentar
Ernie Skrevet 4. september 2012 Del Skrevet 4. september 2012 Kommandolinje og PHP 5.4.6. Regner i grunn med at det her bare skyldes at du viser det i en nettleser. Putter du en pre-tag rundt det hele så burde du se det samme resultatet som jeg gjør. Lenke til kommentar
Rudde Skrevet 4. september 2012 Forfatter Del Skrevet 4. september 2012 Pre tag rundt hva? Og hvorfor har det fungert tidligere? :o Lenke til kommentar
Ernie Skrevet 5. september 2012 Del Skrevet 5. september 2012 (endret) Det fungerer jo helt fint sånn jeg ser det. Det som skjer er jo at når du viser dette i en nettleser (som antagelig HTML) så åpner du en a-tag uten å lukke den. Ergo vil jo mye rart skje. … men prøv dette da: $source = "Randomtext<a href=\"test.php\">some text</a>rtext"; preg_match_all("/<a href=/", $source, $out); echo "<pre>"; var_dump($out); echo "</pre>"; Endret 5. september 2012 av Ernie Lenke til kommentar
Crowly Skrevet 5. september 2012 Del Skrevet 5. september 2012 (endret) Det er ikke nok med pre tagger rundt, <a href= vil fortsatt bli oppfattet som html og dermed ikke vist. Sjekk kildekoden i nettleseren (høyre klikk -> view source) eller $source = "Randomtext<a href=\"test.php\">some text</a>rtext"; preg_match_all("/<a href=/", $source, $out); echo htmlentities($out[0][0]); // <a href= for å skrive ut $out[0][0] i "ikke html" Endret 5. september 2012 av Crowly Lenke til kommentar
Rudde Skrevet 6. september 2012 Forfatter Del Skrevet 6. september 2012 Takk for alle svar, ja fant ut at det var browsern som ikke outputtet det, takk for svar som hjalp meg dit, jeg hadde også bug i source som jeg fikk rettet opp i Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå