Toon posts:

[php] replace code tussen..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,

Ik heb een $string gevuld met:
code:
1
2
3
4
5
6
7
8
9
10
$string = "
Hoi allemaal :):)
Alles flex :):)
[ code]
Hier mogen geen smilies worden replaced :):)
Joepie!!
[/ code]
en hier weer wel!!
jajajak, lol!!
";

Nu wil ik de hele string replacen, dus : ) vervangen door :) behalve wat tussen [ code] [/ code] staat!!


Ik heb de search gebruikt, ik krijg het niet voor elkaar.

Help me!

Verwijderd

Probeer eens om de string in te lezen tot de [ code] tag, daar de smiley's vervangen, vervolgens het deel tussen de tags lezen, dat aan de nieuwe string toevoegen, en dan de tekst na de [/ code] tag lezen en ook daar de smiley's vervangen.

(Hints: StriStr, SubStr)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

toch beter zoeken hoor :)

dit is al VELE malen behandeld... zoek maar eens naar syntax highlighting en ubb codes...

Klaar voor een nieuwe uitdaging.


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
zoek eens naar "regex eval", dan moet je wel iets bruikbaars kunnen vinden.

Verwijderd

met regular expressions kom je er zeker.

Verwijderd

Ik heb er een beetje mee zitten klooien maar bij mij wil het ook niet lukken :(

Ik heb nu dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$s = "
[php1]
:)
test
[/php1]

:)
";

function kleur($code){
$code = str_replace("blaat",":)", $code);
echo("$code");
}

$s = str_replace(":)","blaat", $s);
$s = nl2br($s);
$s = ereg_replace("(\\[php1\])(.*)(\\[/php1\])", kleur('\\2'), $s);
echo "$s";
?>

Waarom werkt dit niet??

De fout zit ergens waar ik de functie kleur() weer oproep

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
komt omdat ereg_replace geen eval-modifier ondersteunt. daarvoor moet je preg_replace gebruiken

Verwijderd

Bijvoorbeeld:
code:
1
$text = preg_replace ("/(link:)(\w+)/e", "getLinkword('long','$2')", $text);

Dit gaat dus voor de tekst link:tag de functie getLinkword('long','tag') aanroepe. Vergeet die /e niet op het einde, anders werkt je functie oproep niet.
Pagina: 1