login  Naam:   Wachtwoord: 
Registreer je!
 Forum

tag vinder

Offline jelle - 22/04/2007 12:20 (laatste wijziging 22/04/2007 12:21)
Avatar van jellePHP beginner http://plaatscode.be/5155/
is een script om te kijken hoeveel tags er zijn maar in jellewebtools.nl/index2.php staan 64 <BR> tags en hij geeft aan dat er 22 zijn 
mijn script in uitvoering: www.jellewebtools.nl/test8.php

iemand oplossing? denk dat er problemen ontsaat bij de explode

21 antwoorden

Gesponsorde links
Offline mesynthetix - 22/04/2007 12:26 (laatste wijziging 22/04/2007 12:30)
Avatar van mesynthetix Nieuw lid Dit is echt geen stijl he:
  1. <?php
  2. preg_match ('/\<\/br\>/', "$v");

Waarvoor dient die "$v", gebruik gewoon $v

En gebruik eens deze regex:
  1. <?php
  2. preg_match('#<br[a-zA-Z0-9"\'= \/]>#i', $v);


Inderdaad, er kunnen ook problemen onstaan bij die explode. Vooral als er een spatie in je <br> tag zit (zoals <br />). Of als er niet voor en na je <br> tag een spatie zit.

Mischien een beter idee is dit:

  1. <?php
  2. $code = preg_replace('#<br[a-zA-Z0-9"\'= \/]>#i', '<br />', $code);
  3. $aantalBr = substr_count($code, '<br />');
Offline ikkedikke - 22/04/2007 12:37
Avatar van ikkedikke PHP expert preg_match_all('#(<br[^>]*>)#i', $v,$matches);
en dan even uittellen hoeveel er in matches zit.
Offline mesynthetix - 22/04/2007 12:39
Avatar van mesynthetix Nieuw lid @ikkedikke: Wel PREG_SET_ORDER gebruiken als flag he ;). Anders kun je count() niet goed gebruiken (aangezien het dan op een andere manier ge-orderd is).
Offline jelle - 22/04/2007 13:11
Avatar van jelle PHP beginner
  1. <?
  2. $a = file_get_contents("http://www.jellewebtools.nl/index2.php");
  3. $b = explode(" ",$a);
  4. foreach($b as $v)
  5. {
  6. preg_match_all('#(<br[^>]*>)#i', $v,$matches,PREG_SET_ORDER);
  7. }
  8. $m= count($matches);
  9. echo $m ;
  10. ?>

kan het niet helemaal volgen en heb alles opgezocht o php.net en dit is wat ik nu heb. hij geeft 0 
ik zal wel wat verkeerd gedaan hebben 
Offline mesynthetix - 22/04/2007 13:12
Avatar van mesynthetix Nieuw lid Gooi die foreach en die explode eens weg. Dan moet het wss wel werken.
Offline jelle - 22/04/2007 13:14 (laatste wijziging 22/04/2007 13:37)
Avatar van jelle PHP beginner ja!!! hij geeft 64 weer!!

ok, heb nog een vraagje hierover...

preg_match_all('#(<br[^>]*>)#i', $v,$matches,PREG_SET_ORDER);

waar staat die# en #i voor ??
Offline Rik - 22/04/2007 13:56
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Dat zijn pattern delimiters, tussen die tekens komt de eigenlijke regex te staan.

Na de laatste delimter kunnen nog enkele letters staan, dat zijn pattern modifiers, de i die jij gebruikt maakt het hoofdletterongevoelig.

Voor jouw doel is het waarschijnlijk handiger om preg_match_all te gebruiken. Die returned het aantal matches en dan hoef je ook niet te exploden.
Offline jelle - 22/04/2007 17:00 (laatste wijziging 22/04/2007 17:02)
Avatar van jelle PHP beginner http://plaatscode.be/5158/

dat heb ik nu maar heb nu probleem met <p> tags als ikdit doe:
  1. preg_match_all('#(<p[^>]*>)#i', $a,$pmatches,PREG_SET_ORDER);//o tag

word de <param> tag ook meegrekent.
en als ik dit doe:
  1. preg_match_all('#(<p [^>]*>)#i', $a,$pmatches,PREG_SET_ORDER);//o tag
let op de spatie!!
dan worden de p tags waar geen atributen in staan niet meegrekend..
wat nu???
Offline ikkedikke - 22/04/2007 17:22 (laatste wijziging 22/04/2007 17:26)
Avatar van ikkedikke PHP expert
  1. preg_match_all('#(<p[^[a-z]^>]*>)#i', $a,$pmatches,PREG_SET_ORDER);

?
en anders:
  1. preg_match_all('#(<p[^[a-z]]*[^>]*>)#i', $a,$pmatches,PREG_SET_ORDER);
Offline Rik - 22/04/2007 17:25
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Probeer deze eens:
  1. <p((?=[ ])[^>]*)?>


Je code kan trouwens korter als je van:
  1. preg_match_all('#(<br[^>]*>)#i', $a,$brmatches,PREG_SET_ORDER);//open tag
  2. $m= count($brmatches);
dit maakt:
  1. $m = preg_match_all('#(<br[^>]*>)#i', $a,$brmatches,PREG_SET_ORDER);//open tag


Maar dat moet je zelf weten. 
Offline jelle - 22/04/2007 21:21
Avatar van jelle PHP beginner ok zal morgen proberen
Offline Godlord - 22/04/2007 22:07 (laatste wijziging 22/04/2007 22:09)
Avatar van Godlord PHP gevorderde
  1. <?php
  2. $text = "Welkom op mijn website<br />Deze is tijdelijk onder constructie<br /><br />Webmaster."
  3. $count = substr_count($text, '<br />');
  4. echo "Er zijn ".$count." <br /> tags op de website";
  5. ?>


je kan dan de $text laten vervangen met natuurlijk de tekst van alle .php bestanden en .html bestanden enzo van je website ofzo of van wat je ook wilt.
Offline ikkedikke - 22/04/2007 22:15
Avatar van ikkedikke PHP expert en als hij nou alle <p>'s wil tellen ongeacht de klasse of id oid?
anders zou het wel heel makkelijk worden;-)
Offline jelle - 23/04/2007 17:39 (laatste wijziging 24/04/2007 17:44)
Avatar van jelle PHP beginner ja! die van bokefalos deed het: getest met een document met erin
:
  1. <P><p><P ><p >
  2.  
  3. <p dir="rtl" align="center">

en het werkt hij pikte er 6 uit,die van ikkidikkie: 1e deed niks en 2e pikte er maar 5 uit


ps: willen even gaan kijken of hij klopt met jullie site's, je hoeft het niet met het oog te tellen al je tags, dat kun je in dreamweaver opzoeken, en vergelijk is of het klopt
http://www.jellewebtools.nl/test6.php en voer je site in

en nog 2 problemen:
  1. <?
  2. preg_match_all('#(< *br[^>]* *>)#i', $content2,$brmatches,PREG_SET_ORDER);//o tag
  3. preg_match_all('#(< */ *br *>)#i', $content2,$sbrmatches,PREG_SET_ORDER);//s tag ?>

de eerste preg haalde uit mijn test doc. 4 keer<br> maar dat waren 4</br> en de 2e preg haalde er niks uit, en nee heb de variablen niet omgwisseld

http://plaatscode.be/5170/
http://plaatscode.be/5171/
Offline Thomas - 25/04/2007 12:38
Avatar van Thomas Moderator Er zijn meer tags dan alleen <br /> of varianten? Ik zou ook geen linebreaks opslaan in je database - wat als iemand een bericht wil wijzigen? Dan moet je alle <br />'s er weer uit slopen.

Wat wil je uiteindelijk bereiken? Dat HTML onschadelijk wordt gemaakt (htmlentities?) of alle tags er uit worden gesloopt (strip_tags?). Wat doe je met de tags?
Offline Simon - 25/04/2007 13:06
Avatar van Simon PHP expert </br> bestaat trouwens niet, het is gewoon <br /> als je je pagina valid wil hebben...
Offline jelle - 26/04/2007 08:16
Avatar van jelle PHP beginner FangorN: soort script dat je kan zien of je alle tags wel heb afgesloten: http://www.jellewebtools.nl/test6.php
Offline Ibrahim - 26/04/2007 08:34
Avatar van Ibrahim PHP expert daarvoor is een html validator...
Offline jelle - 26/04/2007 16:47
Avatar van jelle PHP beginner ja en ik wil er zelf een bouwen....:p 
Offline Ibrahim - 26/04/2007 17:03
Avatar van Ibrahim PHP expert dat is hetzelfde als zeggen, ik ga het wiel opnieuw uitvinden 
Offline nemesiskoen - 26/04/2007 20:10
Avatar van nemesiskoen Gouden medaille

PHP expert
Dat script werkt niet. Dat zegt dat ik mijn br tags niet sluit terwijl ik dat wel doe.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.333s