[php] tekst vervangen door link

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil een functie bouwen die een stuk tekst vervangt door een link.

De functie ziet er nu zo uit:

$cmslink="http://www.site.nl/content/4334";

<?
function maakArtikel($onderwerp,$cmslink,$tekst){
$html.=eregi_replace("(@)(.*)(@)","<a href='".$cmslink.">(.*)</a>",$tekst);
return $html;
}
?>


Tekstvoorbeeld:( is html)

Het is altijd leuk om extra @informatie@ te krijgen.

Te vervangen door: ( is ook html)

Het is altijd leuk om extra <a href='http://www.site.nl/content/4334'>informatie</a> te krijgen.

Het probleem van de bestaande functie is dat wel keurig de tekst @informatie@ gevonden wordt maar ik weet niet hoe ik deze dan binnen de functie kan gebruiken om te gewenste doel te bereiken.
Ik kan natuurlijk kiezen voor de botte methode, maar indien mogelijk heb ik liever een nette oplossing.

Wie kan me een stukje op weg helpen

[ Voor 7% gewijzigd door Verwijderd op 13-10-2005 17:35 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
4
function maakArtikel($onderwerp,$cmslink,$tekst){
  $html .= preg_replace("/@(.*)@/i","<a href='".$cmslink.">\\1</a>",$tekst);
  return $html;
}

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
NMe?
Volgens mij wil TS gewoon dat $onderwerp in de regex gestopt wordt. :P

{signature}


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Waarom regexps gebruiken als ze niet nodig zijn? Je wilt 'informatie' vervangen door '<a href='http://www.site.nl/content/4334'>informatie</a>':
PHP:
1
$html=str_replace('informatie','<a href="'.$link."'>informatie</a>',$html);

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of je maakt in het begin een globale variabele als $complete_informate_link welke je in je teksten kwijt kan, of je maakt dingen als {INFORMATIE} die je matcht, etc etc. :)

{signature}


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Voutloos schreef op donderdag 13 oktober 2005 @ 17:02:
NMe?
Volgens mij wil TS gewoon dat $onderwerp in de regex gestopt wordt. :P
Ow. :P In dat geval is een regexp inderdaad nogal overbodig en voldoet een str_replace of een str_ireplace prima.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op donderdag 13 oktober 2005 @ 17:00:
PHP:
1
2
3
4
function maakArtikel($onderwerp,$cmslink,$tekst){
  $html .= preg_replace("/@(.*)@/i","<a href='".$cmslink.">\\1</a>",$tekst);
  return $html;
}
Ik vind het helemaal super, dit is nou een mooi, nette oplossing, en ook verschrikkelijk snel. Héél erg bedankt! BTW, zo is ie helemaal goed
PHP:
1
$html .= preg_replace("/@(.*)@/i","<a href='".$cmslink." ' >\\1</a>",$tekst);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GlowMouse schreef op donderdag 13 oktober 2005 @ 17:07:
Waarom regexps gebruiken als ze niet nodig zijn? Je wilt 'informatie' vervangen door '<a href='http://www.site.nl/content/4334'>informatie</a>':
PHP:
1
$html=str_replace('informatie','<a href="'.$link."'>informatie</a>',$html);
Nee hoor je wilt $var vervangen door <a href='$link'>$var></a> dus de eerste oplossing was al gelijk helemaal wat ik bedoelde.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op donderdag 13 oktober 2005 @ 17:34:
[...]
Nee hoor je wilt $var vervangen door <a href='$link'>$var></a> dus de eerste oplossing was al gelijk helemaal wat ik bedoelde.
Het verschil in functionaliteit is niet groot, het doet allebei wat je wil, maar de str_replace functie is performance-gewijs een stuk goedkoper. :)

{signature}

Pagina: 1