login  Naam:   Wachtwoord: 
Registreer je!
 Forum

links in html code vervangen ...

Offline pj_muller00 - 10/10/2005 20:59
Avatar van pj_muller00PHP interesse Beste,
Ik zou in een zeer lange tekst alle links onder de vorm <a href="x.htm"> willen herleiden naar <a href="?p=x">

Dus concreet altijd ?p= ervoor en de .htm laten vallen ...

Volgens mij moet dit met een functie in php mogelijk zijn ...
Zou iemand mij kunnen vertellen hoe 

Pj 

14 antwoorden

Gesponsorde links
Offline haytjes - 10/10/2005 21:20
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
ctrl - r (replace)
1ste kotje: x.htm
2de kotje: ?p=

en alles is opgelost
Offline Dolfje - 10/10/2005 21:40
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
$tekst = preg_replace("/<a href=\"(.+?).htm\">/", "<a href=\"?p=\\1\">", $tekst);

dit zou het moeten doen.

als ik jou was zou ik eens beginnen rexep te leren. Dat is heel handig.
Offline pj_muller00 - 11/10/2005 17:55
Avatar van pj_muller00 PHP interesse Maar zie ... eigenlijk gaat een hele website overgeschakelt worden van een statische (html) naar dynamische (php) site.

De inhoud van de pagina's word dus behouden en die gaan als tekst in een database ...

Maar dus als die html code word ingegeven, moet php automatisch de links veranderen voor de nieuwe navigatie structuur ...

Dus hoe moet dit ... al zeker niet de eerste reactie maar mss wel de tweede. 

Ondertussen heb ik er zelf nog wat overnagedacht ... in de links zitten ook ankers ... #blablabla je weet wel nu als een link verwijst naar de pagina ?p=x#anker2 ... gaat dat dan lukken ?
En dan zal waarschijnlijk ook een andere preg_replace nodig hebben om de #... niet te laten verwijderen


Sry voor het lang bericht,
Pj 

PS: @dolfje wat is rexep?
Offline Dolfje - 11/10/2005 18:16 (laatste wijziging 11/10/2005 18:16)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
het volgende moet wel werken met #:
$tekst = preg_replace("/<a href=\"(.+?).htm#(.+?)\">/", "<a href=\"?p=\\1#\\2\">", $tekst);


rexep: regulare expressie (of zoiets). kan het niet echt uitleggen, je zou er best op zoeken.
het is een manier om onbekende dingen te zeggen, zoals
files.* in microsoft.
Offline pj_muller00 - 11/10/2005 18:19
Avatar van pj_muller00 PHP interesse En dus zo een link ?p=pagina#anker zou dus naar die anker gaan of werken ankers enkel bij pagina.htm#anker ?

Alvast bedank dolfje 
Pj 
Offline Thomas - 11/10/2005 19:04
Avatar van Thomas Moderator Het woord waar dolfje naar zocht is regexp (regular expression). Dit is een patroon dat gebruikt kan worden om dat patroon te herkennen in een text en hier wat mee te doen (vervangen door iets anders bijvoorbeeld).
Offline b4nkr0bz0r - 11/10/2005 19:11 (laatste wijziging 11/10/2005 19:11)
Avatar van b4nkr0bz0r PHP gevorderde
  1. function iets_neps($bericht)
  2. {
  3. return $bericht = preg_replace('#<a href="(.*?)"\.html\#(.*?)>/si', '<a hhref="?=\\2">\\3</a>', $bericht);
  4. }
  5.  
  6. echo iets_neps('<a href="blaat">klik om naar blaat te gaan</a>'); // output: <a href="iets.html#blaat">klik om naar blaat te gaan</a>


denk dat dit werkt (reg-exp is als het goed is goed) maar denk dat ik je niet goed begreep, deze reactie is dus eigenlijk gegokt!
Offline pj_muller00 - 11/10/2005 20:30 (laatste wijziging 11/10/2005 20:30)
Avatar van pj_muller00 PHP interesse Nu zal het duidelijk zijn 
  1. <?php
  2. function functie_gedoe($bericht){
  3. $bericht = functieblabla($bericht);
  4. return $bericht;
  5. }
  6.  
  7. echo functiegedoe('<a href=\"pagina.htm#anker\">Link</a>');
  8. Zou moeten geven <a href="?p=pagina#anker">Link</a>


En voor de derde keer gaat die anker nu werken ?
Pj 
Offline Rens - 11/10/2005 21:11
Avatar van Rens Gouden medaille

Crew algemeen
Gebruik de functie die b4nkr0bz0r geeft dan?
Daar werkt je anker.
Offline pj_muller00 - 12/10/2005 13:12
Avatar van pj_muller00 PHP interesse maar het moet zijn ?p=pagina#anker en niet <a href="iets.html#blaat">
Offline Rens - 12/10/2005 13:47
Avatar van Rens Gouden medaille

Crew algemeen
Try this:
  1. $tekst = preg_replace("(.+?).htm#(.+?)", "?p=\\1#\\2", $tekst);


Weet niet zeker of het werkt, ben niet goed in regexp, maar zo ongeveer...
Offline Dolfje - 12/10/2005 16:33
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
Ik denk dat je erover hebt gelezen maar:

$tekst = preg_replace("/<a href=\"(.+?).htm#(.+?)\">/", "<a href=\"?p=\\1#\\2\">", $tekst);

dit werkt met het anker
Offline Rens - 12/10/2005 16:34 (laatste wijziging 12/10/2005 16:51)
Avatar van Rens Gouden medaille

Crew algemeen
Citaat:
maar het moet zijn ?p=pagina#anker en niet <a href="iets.html#blaat">


Hij wil het zonder <a...></a> tag eromheen:)

Jah, dat kun je wel zeggen jah:s
Offline pj_muller00 - 12/10/2005 16:47 (laatste wijziging 12/10/2005 16:59)
Avatar van pj_muller00 PHP interesse Nee met sry kwas weer is onduidelijk ...
En dat van dolfje verandert blijkbaar niets 

Dus nog een laatste keer, in een document vol met tekst moeten de linken onder de vorm
  1. <a href="pagina.htm#anker">

Verandert worden naar
  1. <a href="?p=pagina#anker">


En als er in het origineel geen anker staat moet er gewoon
  1. <a href="?p=pagina">

Staan

Pj
;-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.234s