login  Naam:   Wachtwoord: 
Registreer je!
 Forum

preg_replace

Offline Chilion - 26/11/2009 10:34
Avatar van ChilionMySQL interesse Beste dames/heren,

Ik ben nu eigenlijk bij elkaar al gewoon een dag aan het zoeken, en heb ook flink wat gevonden.
Het probleem is, ik kom een eind, maar daar loop ik vast.

Wat ik wil is dat alle textarea attributen uit een bepaalde input string ($_POST)
Automatisch eruit gesloopt worden.

Nu heb ik deze code, krijg ik geen foutmeldingen, maar werkt het ook nog niet helemaal.
  1. $input = preg_replace('#\<textarea(.*?)>#', ' ', $_POST['pagina']);


Ook heb ik de volgende code al (tevergeefs) gebruikt en geprobeerd.

  1. $input = preg_replace('/<textarea[^>]+>/', 'A' ,$_POST['pagina']);

Let op, de output komt vanaf CKEDITOR

15 antwoorden

Gesponsorde links
Offline ArieMedia - 26/11/2009 10:44
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Hmm probeer eens:
  1. $input = preg_match($input, '#\<textarea (.*)\>#', $aMatches);
  2. echo '<pre>'.print_r($aMatches, 1).'</pre>';
Offline Chilion - 26/11/2009 10:50 (laatste wijziging 26/11/2009 10:53)
Avatar van Chilion MySQL interesse Kheb die van jou precies gekopieerd. Komt dit uit:

Citaat:
Warning: preg_match() [function.preg-match]: Empty regular expression in /vhosts/www/www.stockl18.nl/beheer/index.php on line 46


Wanneer ik er dit van maak:

  1. $input = preg_match($_POST['pagina'], '#\<textarea (.*)\>#', $aMatches);
  2.  
  3. echo '<pre>'.print_r($aMatches, 1).'</pre>';


Krijg ik dit:
Citaat:
Warning: preg_match() [function.preg-match]: Unknown modifier ' ' in /vhosts/www/www.stockl18.nl/beheer/index.php on line 46
Offline ArieMedia - 26/11/2009 10:59
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Dom.. volgorde verkeerd..

  1. $input = '<textarea name="test" ></textarea>';
  2.  
  3. $input = preg_match('#\<textarea (.*)[[:space:]]?\>#', $input, $aMatches);
  4. echo '<pre>'.print_r($aMatches, 1).'</pre>';
Offline Chilion - 26/11/2009 11:38
Avatar van Chilion MySQL interesse Ik krijg dit er nu uit:
Array
(
[0] =>
[1] => name="test" >

En bij 0 staat dan een textarea
Offline ArieMedia - 26/11/2009 11:43
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Chilion schreef:
Ik krijg dit er nu uit:
Array
(
[0] =>
[1] => name="test" >

En bij 0 staat dan een textarea

klopt.. de preg_match werkt niet helemaal lekker.. Maar heb er nu even geen tijd voor om het goed werkend te maken (omdat ik hier dan wel wat langer mee bezig ben dan 5 minuten xD). Als je geluk hebt komt Richard langs, dat is de heer des Regexes 

reguliere expressies <-- Mooi voorbeeld, misschien kan je zelf een beetje spelen.
Offline Chilion - 26/11/2009 11:54
Avatar van Chilion MySQL interesse Ok, dan wacht ik op Richard of een andere heer der Regexes.
In ieder geval bedankt voor je hulp.

Beetje spelen wordt ik wat moe van, ben al een flinke poos bezig 
Offline Richard - 26/11/2009 12:51
Avatar van Richard Crew algemeen Eh, wat wil je precies? De attributen van een textarea element *allemaal* weghalen?

  1. $output = preg_replace('{(<textarea)[^>]*(>)}i', '$1$2', $input);
Offline Chilion - 26/11/2009 13:40
Avatar van Chilion MySQL interesse Ik wil de hele textarea tag weghalen, ongeacht van wat erin staat. Kom met jou ding nog niet verder, wel alvast bedankt!
Offline Richard - 26/11/2009 13:41
Avatar van Richard Crew algemeen Dan had je duidelijker moeten zijn...

Citaat:
Wat ik wil is dat alle textarea attributen uit een bepaalde input string ($_POST)
Automatisch eruit gesloopt worden.

Attributen dus...

Maar, wil je dan ook de content weghalen?
Offline Chilion - 26/11/2009 13:48
Avatar van Chilion MySQL interesse Jeps.
Alles in de textarea moet weg 
De hele area + content.
Offline Richard - 26/11/2009 13:51
Avatar van Richard Crew algemeen Ahaaaa :-)

  1. '{<textarea[^>]*>(?:[^<]++|<(?!/textarea>)[^<]++)*+</textarea>}i'
Offline ArieMedia - 26/11/2009 13:54
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Richard schreef:
Ahaaaa :-)

[..code..]
Ik snap nogsteeds niet hoe je het flikt 
Offline Chilion - 26/11/2009 13:58 (laatste wijziging 26/11/2009 13:59)
Avatar van Chilion MySQL interesse Ik snap ook niet hoe je het doet, tprobleem is denk ik ook een beetje dat het nog niet werkt 

Hij staat in deze code:
  1. if (isset($_POST['pagina']) && !empty($_POST['pagina']))
  2. {
  3. //$input = preg_replace('/<textarea[^>]+>/', 'A' ,$_POST['pagina']);
  4. //$input = preg_replace('#\<textarea(.*?)>#', 'AA', $_POST['pagina']);
  5.  
  6. $input = preg_replace('{<textarea[^>]*>(?:[^<]++|<(?!/textarea>)[^<]++)*+</textarea>}i', '', $_POST['pagina']);
  7.  
  8. $page = (isset($_GET['page']) ? $_GET['page'] : 1);
  9.  
  10. //echo $input;
  11. $sql_update = '
  12.  
  13. UPDATE
  14. pagina
  15. SET
  16. content = "'.$input.'"
  17. WHERE
  18. id = '.$page;
  19. mysqli_query($link, $sql_update);
  20.  
  21. }


En als ik wat invoer in mijn CKEditor en dan opsla blijft het bestaan helaas 
Offline Richard - 26/11/2009 14:01 (laatste wijziging 26/11/2009 14:02)
Avatar van Richard Crew algemeen Je code wat opschonen kan *echt* geen kwaad, dit is onleesbaar...

  1. <?php
  2. if (isset($_POST['pagina']) && !empty($_POST['pagina'])) {
  3. $input = preg_replace('{<textarea[^>]*>(?:[^<]++|<(?!/textarea>)[^<]++)*+</textarea>}i', '', $_POST['pagina']);
  4.  
  5. $page = isset($_GET['page']) ? $_GET['page'] : 1;
  6.  
  7. $sql_update = "
  8. UPDATE pagina
  9. SET content = '" . mysqli_real_escape_string($link, $input) . "'
  10. WHERE id = '" . mysql_real_escape_string($link, $page) . "'
  11. ";
  12.  
  13. mysqli_query($link, $sql_update);
  14. }
Offline Chilion - 26/11/2009 14:09 (laatste wijziging 26/11/2009 14:10)
Avatar van Chilion MySQL interesse Ay, wanneer ik nu naar mijn output kijk zie ik een verschil.

ipv < staat er nu de HTML code daarvoor &lt;
Die moet hij ook weg halen, omdat entity_decode gebruikt wordt bij het ophalen.

Kan ik dat in jou voorbeeld gewoon gebruiken?

Ik probeerde dat zo namelijk:
  1. $input = preg_replace('{&lt;textarea[^>]*&gt;(?:[^<]++|&lt;(?!/textarea&gt;)[^<]++)*+&lt;/textarea&gt;}i', '', $_POST['pagina']);

Maar dat werkt niets uit.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.351s