[PHP] Regex probleem

Pagina: 1
Acties:

Onderwerpen


  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Het hele Preg_replace zit me even tegen :(

ik heb de text
code:
1
[google=query]

die wil ik veranderen naar
code:
1
[google=query]query[/query]



maar als je de text
code:
1
[google=query]query[/query]

hebt dan wordt dat
code:
1
[google=query]query[/query]query[/query]

waar ik weer niks aan heb :(

dat wat ik hier boven uitleg wordt in deze replace gedaan:
PHP:
1
2
3
4
5
6
7
8
9
$pre_parse_find = array(
'!\\[google=([^\]]*)\]!Usi',
);

$pre_parse_replace = array(
'[google=\1]\1[/google]',
);

return preg_replace($pre_parse_find, $pre_parse_replace, $input_text);


maar hij veranderd nogsteeds [google=query]text[/google] in [google=query]query[/google]text[/google]

Verwijderd

Het lig misschien aan mij, maar hier werkt het locaal wel:

als ik als $input_text ='[ google=hoi]'; gebruik dan krijg ik netjes:

[ google=hoi]hoi[ /google]

Mvg,

Kris.

[ Voor 5% gewijzigd door Verwijderd op 25-12-2003 13:30 ]


  • Commander Koen
  • Registratie: Juni 2003
  • Laatst online: 26-06 14:00
[edit] laatmaar stond onzin :P het is nog vroeg :)

[ Voor 116% gewijzigd door Commander Koen op 25-12-2003 13:44 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

je zal met een look-ahead assertion moeten werken; dit werkt al aardig denk ik:

PHP:
1
2
3
4
5
6
7
8
$text1 = '[google=zoekwoorden]zoeken naar query[/query] en hier gaat de text door';
$text2 = '[google=zoekwoorden] en hier gaat de text door';

$find = '/\\[google=([^\]]+)](?![^\\[]+\\[\/query\])/is';
$replace = '[google=$1]$1[/query]';

echo preg_replace($find, $replace, $text1).'<br />';
echo preg_replace($find, $replace, $text2);

Intentionally left blank


  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
@ crisp:

Bedankt hij werkt


* 4Real kan weer verder werken :)

[ Voor 39% gewijzigd door 4Real op 25-12-2003 13:43 ]