PFZ.nl - PHP Community: preg_replace probleem met REGEX.. - PHP - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 27-01-2012 13:42
Ik heb een string met content, welke een aantal keren onderstaande code bevat...

1
<p>[CMD_BLOCK]</p>


Dit gedeelte wordt vervangen door iets anders, echter krijg ik met preg_replace het niet voor elkaar.
Ook geprobeerd met str_replace, alleen daar kan ik geen limit geven van 1 per keer...

1
2
$Block_Pattern = "/\<p\>\[CMD_BLOCK\]\<\/p\>/";
$PLACE_CONTENT = preg_replace($Block_Pattern, $Block_Content, $PLACE_CONTENT, 1);


Dit werkt dus niet.

Iemand suggesties?

#2 27-01-2012 13:52
  • Ivo P.
  • Groep: Verenigingsleden
  • Posts: 2802
  • Actief sinds: 17-01-2002
1
2
3
4
5
6
7
8
9
10
11
12
<?php

$PLACE_CONTENT = 'abc <p>[CMD_BLOCK]</p> abc abc <p>[CMD_BLOCK]</p> llll';
$Block_Pattern = "#<p>\[CMD_BLOCK\]</p>#";
$Block_Content = 'XXXXX';


$PLACE_CONTENT = preg_replace($Block_Pattern, $Block_Content, $PLACE_CONTENT, 1);

echo $PLACE_CONTENT;

?>


Die \] kan ook gewoon ] zijn, omdat de voorafgaande [ al geëscapet is.
maar om consequent te zijn, doe ik die meestal wel.
Ivo Peters
Developer en systeembeheerder @ PeHa ICT Services. blog.peha-ict.nl

#3 27-01-2012 16:15
Die # als delimiter, moet dat nog ergens aangegeven worden?
Het vervangt bij mij nog niets.
PHP 5.3.6 (zie dat ik weer moet updaten...)

#4 27-01-2012 16:31
Grappige is, dat als ik de <p> er niet in zet, dat het dan wel werkt.
Echter, ik moet wel <p> gebruiken in mijn CMS, anders worden de blokken niet goed weergegeven...

$Block_Pattern = "#\[CMD_BLOCK\]#";

En een blok [CMD_BLOCK] wordt netjes vervangen.
Zodra de <p> </p> erbij komt, niet.
Ook al zitten klooien met escapen en preg_quote, maar helpt niet veel.

#5 27-01-2012 16:51
  • Ivo P.
  • Groep: Verenigingsleden
  • Posts: 2802
  • Actief sinds: 17-01-2002
dat script dat ik hierboven gaf, werkt bij mij.

php 5.3.8

dus dan moet het ook wel op 5.3.6 werken.

Ik gebruik de # als delimiter, om een woud aan slashes te voorkomen. Vooral, om forward en backslashes én omdat in de html ook al een / staat (</p>) die dan weer escaped moet worden.
Ivo Peters
Developer en systeembeheerder @ PeHa ICT Services. blog.peha-ict.nl

#6 27-01-2012 17:47
Ik ga zo nog even direct in de database kijken of het er wel letterlijk staat ipv urlencoded of zoiets..
Maar vind het nog steeds een vreemd verhaal dat <p> en zo problemen geeft.
Dit weekend maar eens zien of de update van 5.3.6 naar 5.3.9 makkelijk te doen is. Zal vast wel ;-)

#7 27-01-2012 19:47
1. Wel geleerd van andere delimiters en wanneer escapen nodig is
2. En zoals gewoonlijk weer een oversight....
In de database staan alle tags in hoofdletters, in mijn CMS-editor stond het in kleine letters.
Met optie i werkt het nu altijd!

Tnx!


Inloggen wachtwoord vergeten? Aanmelden