[php] Casesensitive regex *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
Ik heb een script gemaakt waarmee je de title, description en keywords van een site kan halen. Alleen zit ik met een probleem. Wanneer de meta tag er als volgt uitziet dan doet hij het niet.

code:
1
<meta name="DESCRIPTION" content="test">


Wanneer de meta tag er zo uit ziet doet hij het wel

code:
1
<meta name="description" content="test">


Dit is de regel die ervoor moet zorgen.
PHP:
1
preg_match("|<meta[^>]* name=\"description\"[^>]* content=\"(.*)\"[^>]*>|siU", $fr, $description);


Ik dacht altijd wanneer er op het einde een i stond dat ie dan niet meer hoofdletter gevoelig is. Kan iemand me helpen zodat hij wel allebei de meta tags door laat?

Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

Ik weet het niet zeker maar volgens mij moet je die 'opties' zoals case-insensitive enclosen tussen een ? en een )

kijk maar eens hier: http://www.php.net/manual/en/pcre.pattern.syntax.php

Succes

Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
[ash] schreef op 10 december 2002 @ 10:53:
Ik weet het niet zeker maar volgens mij moet je die 'opties' zoals case-insensitive enclosen tussen een ? en een )

kijk maar eens hier: http://www.php.net/manual/en/pcre.pattern.syntax.php

Succes
Als je die op het einde geldt het toch voor de gehele regel?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Al bedacht dat hij gewoon niet matcht omdat je regex brak is? Weet je uberhaupt wel wat er staat, in die regex, of zit je copy-paste te scripten?
Zo ja, leg 'm dan 's uit,
zo nee, leer alsjeblieft wat meer over regexes voor dat je met patronen gaat schermen zonder dat je weet waar je mee bezig bent.

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


Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
Ik kan hem wel uitleggen.

| = geeft het begin en eind aan
[^>] = als hij niet eindigd op >
* = elke karakter
i = niet meer hoofdletter gevoelig
s = [kan ik niet makkelijk beschrijven weet wel ongeveer wat het doet]
U = [kan ik niet makkelijk beschrijven weet wel ongeveer wat het doet]

Kun je me wel enkele tips geven, drm, hoe ik het dan wel moet doen?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Jouw regexp op jouw eerste voorbeeld doet het gewoon hier...
code:
1
2
3
4
5
6
7
8
9
10
11
<?
$des =  '<meta name="DESCRIPTION" content="test">';
echo preg_match("|<meta[^>]* name=\"description\"[^>]* content=\"(.*)\"[^>]*>|siU", $des, $matches);
print_r($matches);
?>
1
Array
(
    [0] => <meta name="DESCRIPTION" content="test">
    [1] => test
)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

frankschers schreef op 10 December 2002 @ 11:13:
Ik kan hem wel uitleggen.

| = geeft het begin en eind aan
[^>] = als hij niet eindigd op > alles behalve >
* = elke karakter 0 of meer herhalingen van het vorige
i = niet meer hoofdletter gevoelig
s = [kan ik niet makkelijk beschrijven weet wel ongeveer wat het doet]
U = [kan ik niet makkelijk beschrijven weet wel ongeveer wat het doet]

Kun je me wel enkele tips geven, drm, hoe ik het dan wel moet doen?

Maar kan ook zijn dat ik in de war ben hoor :)

[ Voor 5% gewijzigd door Janoz op 10-12-2002 11:25 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 15-09 13:20
ACM schreef op 10 december 2002 @ 11:21:
Jouw regexp op jouw eerste voorbeeld doet het gewoon hier...
code:
1
2
3
4
5
6
7
8
9
10
11
<?
$des =  '<meta name="DESCRIPTION" content="test">';
echo preg_match("|<meta[^>]* name=\"description\"[^>]* content=\"(.*)\"[^>]*>|siU", $des, $matches);
print_r($matches);
?>
1
Array
(
    [0] => <meta name="DESCRIPTION" content="test">
    [1] => test
)
Shit ja. Had een typ fout staan in description in mijn eigen meta tag |:(

Maar de regex kan beter. Dus wil ik hem graag ook verbeteren. Kan iemand me daarbij helpen? Ben nog geen regex goeroe.
Pagina: 1