Toon posts:

[PHP] regex van PHP variabelen en waarden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een regex te maken die uit een bepaald stuk tekst (ingelezen uit een bestand) variabelen met de bijbehorende waardes opspoort:
PHP:
1
<?$contents="\$myname=\"you\";";echo "<hr>";$ret=preg_match_all("/\$([^=]*)\s*=\s*\"([^\"]*)\"/im",$contents,$matches);echo $contents."<br>";echo "Return: ".$ret."<br>";echo "aantal: ".count($matches[0])."<br>";for ($i=0; $i< count($matches[0]); $i++) {  echo "matched: ".$matches[0][$i]."<br>";  echo "var: ".$matches[1][$i]."<br>";  echo "waarde: ".$matches[3][$i]."<br><br>";}?>

Ik heb voor het testen maar even een korte teststring aangemaakt.

Om de een of andere reden wil hij niet matchen. Ziet iemand de fout?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Begin eerst eens met '' als quotes te gebruiken, de $ moet je dubbel escapen in dit geval omdat \$ de metacharacter $ oplevert bij "" en niet de \$ sequence voor de $-matching.

Verwijderd

Topicstarter
Op zaterdag 15 juni 2002 12:23 schreef ACM het volgende:
Begin eerst eens met '' als quotes te gebruiken
[knip]
Hoe bedoel je dat? Er wordt toch overal tebruik gemaakt van "?

de \\$ is idd de juiste oplossing.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

The_dude:
Hoe bedoel je dat? Er wordt toch overal tebruik gemaakt van "?
Als je '...' gebruikt bij regexen hoef je simpelweg veel minder te escapen. Als de " " gebruikt moet soms dingen dubbel gaan escapen, zoals in dit geval.

Namelijk: de $ is een speciaal karakter in een " " string (je neemt dan een variabele op in de string), dus die moet je voor PHP al escapen met een \ ervoor. Vervolgens maakt php er dus letterlijk een $ van, en is hij voor pcre dus nog niet ge-escaped. Daarom is het makkelijker '...' te gebruiken. :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Thnx voor de uitleg!