[PHP] Artikelen systeem

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo,

Ik ben op dit moment bezig met een artikelen systeem. Het idee is dat als je een artikel met meerdere pagina's wilt toevoegen dat je dan op de plek waar de volgende pagina moet beginnen [page=page2] typt en dat dan automatisch de text na [page=page2] op pagina 2 komt te staan.

Dat werkt al alleen nu wil dat hetgene wat ik heb ingevuld, in dit geval page2 (van [page=page2]), automatisch ook de titel wordt van de volgende pagina. Alleen ik krijg het niet voor elkaar om alleen dat gedeelte uit de string te selecteren.

Misschien is het heel simpel maar ik zit er al een tijdje mee te kijken. Hoop dat iemand me hier mee kan helpen.

Groetjes

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

PHP:
1
2
3
$pagesplit = "[page=page2]";
$title = substr($pagesplit, strpos($pagesplit, "="), (strlen($pagesplit) - 1));
echo ($title);


Niet getest, maar zoiets zou 't moeten zijn lijkt me. Als ik begrijp wat je bedoelt tenminste.

Misschien moet je bij
strpos($pagesplit, "=")
nog 1 optellen.

[ Voor 20% gewijzigd door TheLunatic op 15-12-2005 18:44 ]

Mother, will they like this song?


Verwijderd

Topicstarter
TheLunatic schreef op donderdag 15 december 2005 @ 18:43:
PHP:
1
2
3
$pagesplit = "[page=page2]";
$title = substr($pagesplit, strpos($pagesplit, "="), (strlen($pagesplit) - 1));
echo ($title);


Niet getest, maar zoiets zou 't moeten zijn lijkt me. Als ik begrijp wat je bedoelt tenminste.

Misschien moet je bij
strpos($pagesplit, "=")
nog 1 optellen.
Je moet het zo zien:

Ik heb een string met mijn artikel. Uit die string wil ik dus [page=page2] selecteren. De positie is dus nooit hetzelfde aangezien dat verschild per artikel. Ik weet dus niet hoe ik een substring moet selecteren op een positie die onbekend is.

Verwijderd

$uitvoer = preg_split('#\\[page=[^\]]{1,100}\]#', $invoer);

geeft:
Array('tekst', 'titel', 'tekst', 'titel');
Dus eerste item kan verwijdert worden:

Dan voorbeeld:
[page=Test]Dit is een test[page=tweede pagina]Tweede pagina

geeft array('', 'Test', 'Dit is een test', 'tweede pagina', 'Tweede pagina');

Niet getest :) mischien ergens een typefoutje :) maar hiermee moet je er wel komen

(je kan in de preg_split ook nog zorgen dat hij alleen pakt als er geen enters zitten door \n\r toe te voegen, alles kan in de titel behalve de ] dan stopt ie :), verder heb ik een limiet van minimaal 1 en maximaal 100 tekens op je titel gezet. ALs je wat meer strictere regels wil, moet je even in de links hier onder kijken.)

Meer info:
http://nl2.php.net/manual/nl/function.preg-split.php
http://nl2.php.net/manual/nl/pcre.pattern.modifiers.php
http://nl2.php.net/manual/nl/pcre.pattern.syntax.php

[ Voor 41% gewijzigd door Verwijderd op 15-12-2005 22:04 ]


Verwijderd

Topicstarter
Als ik dit gebruik dan gaat het niet helemaal goed:

$uitvoer = preg_split('#\\[page=[^\]]{1,100}\]#', $invoer);

Als $invoer heb ik [page=test]dit is pagina1[page=pagina twee]dit is pagaina twee.

Dan is $uitvoer[0] leeg. $uitvoer[1] = dit is pagina1 enz.

[page=test] etc. laat hij dus gewoon weg.

[ Voor 96% gewijzigd door Verwijderd op 15-12-2005 22:41 ]


Verwijderd

Verwijderd schreef op donderdag 15 december 2005 @ 22:32:
Als ik dit gebruik dan gaat het niet helemaal goed:

$uitvoer = preg_split('#\\[page=[^\]]{1,100}\]#', $invoer);

Als $invoer heb ik [page=test]dit is pagina1[page=pagina twee]dit is pagaina twee.

Dan is $uitvoer[0] leeg. $uitvoer[1] = dit is pagina1 enz.

[page=test] etc. laat hij dus gewoon weg.
Je hebt helemaal gelijk, mijn fout :)
$uitvoer = preg_split('#\\[page=([^\]]{1,100})\]#', $invoer, -1, PREG_SPLIT_DELIM_CAPTURE);

Zou het wel moeten doen: van titel een delimeter gemaakt, en deze capturen via de flag :). Mijn fout, Iets van moe, 5sec en zo :). Maar succes ermee

(als het zo nog niet werkt, ga ik wel even een PHP bestandje maken, dan werkt het ook binnen 2 seconden)

[ Voor 24% gewijzigd door Verwijderd op 15-12-2005 22:48 ]


Verwijderd

Topicstarter
Ja het werkt zo!

Echt bedank!

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
Even een sceptische noot tussen door, waarom wil je dat de gebruiker zelf bepaalt welk nummer de pagina krijgt? Heb je niet genoeg aan de informatie dat er een page-break moet komen. Nummers kun je daar zelf wel aan hangen. Als de user het nummer bepaalt moet je namelijk checks uitvoeren (en evt errors gooien) of de nummering wel klopt.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
T-MOB schreef op vrijdag 16 december 2005 @ 01:07:
Even een sceptische noot tussen door, waarom wil je dat de gebruiker zelf bepaalt welk nummer de pagina krijgt? Heb je niet genoeg aan de informatie dat er een page-break moet komen. Nummers kun je daar zelf wel aan hangen. Als de user het nummer bepaalt moet je namelijk checks uitvoeren (en evt errors gooien) of de nummering wel klopt.
je moet sowieso je input checken, of die nou direct van de gebruiker komt of indirect van de gebruiker komt (linkjes ed) dus ik zie het probleem niet zo

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
T-MOB schreef op vrijdag 16 december 2005 @ 01:07:
Even een sceptische noot tussen door, waarom wil je dat de gebruiker zelf bepaalt welk nummer de pagina krijgt? Heb je niet genoeg aan de informatie dat er een page-break moet komen. Nummers kun je daar zelf wel aan hangen. Als de user het nummer bepaalt moet je namelijk checks uitvoeren (en evt errors gooien) of de nummering wel klopt.
Als ik het goed begrepen heb vraagt hij niet om een nummering, maar is die "page2" de titel van die pagina.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Arto
  • Registratie: November 2005
  • Laatst online: 20-09 21:40
niet makelijker om het zo te maken

code:
1
2
3
4
5
6
7
8
9
10
[page1]
<HTML>
.......
</HTML>
[/page1]
[page2]
<HTML>
.......
</HTML>
[/page2]


en dan als script

PHP:
1
2
3
4
<?
// open shizzle

$pagina = preg_replace("/(.*)(\\[page1\])(.*)(\\[\/page1\])(.*)/s", "\\3", $pagina);


zoiets zou wel moeten werken heb nie getest, maar lijkt mij gioed
Pagina: 1