[PHP] Tags strippen uit string *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tim_R
  • Registratie: Oktober 2004
  • Laatst online: 16-06 16:27
Ik ben bezig met een CMS, waarin in een javascript wysiwyg-editortje heb geplaatst. Deze editor genereert alleen soms <p>-tags op plaatsen waar ik ze niet wil hebben. Nu heb ik dat probleempje heel makkelijk opgelost met een str_replace vóórdat de desbetreffende tekst in de database wordt geplaatst.

Nu is het echter zo dat gebruikers vaak hele lappen tekst (met html erin) kopieren naar mijn editor. Dat werkt allemaal prima, alleen duikt ook hier weer het probleem van de ongewenste <p>-tags op.. In een bepaald stuk tekst heb ik nu <p class="iets"> tags staan die dus logischerwijs niet door de str_replace gespot worden.

Mijn code is nu
PHP:
1
2
    $bericht = str_replace("<p>","",$bericht);
    $bericht = str_replace("</p>","",$bericht);


Wat ik graag wil is dat altijd alle <p>-tags worden verwijderd. Dat zou je normaal met een sterretje aangeven, iets dergelijks:
PHP:
1
"<p".*.">"

Maar dat werkt uiteraard niet.
Mijn vraag is dan ook: wat moet ik in php gebruiken om dit te bewerkstelligen?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:12

Tux

Ik zou eens kijken naar regular expressions. Dan kan je met preg_replace() bijvoorbeeld die p's eruit filteren.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 22:40
ereg_replace kan alles wat jij hier wil:
PHP:
1
ereg_replace('<p\s*(class=)*.*>');


Zoiets denk ik?

Acties:
  • 0 Henk 'm!

  • Keeper
  • Registratie: Juni 2001
  • Niet online

Keeper

<3 Ruby


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Timmyboy_ schreef op zaterdag 18 april 2009 @ 14:15:
... Nu is het echter zo dat gebruikers vaak hele lappen tekst (met html erin) kopieren naar mijn editor....
Dan is het toch logisch dat die tekst wordt ingedeeld in paragrafen (<p>-tags). Ik vraag me eerder af waarom je geen <p> tags zou willen. Die zijn toch met CSS te stylen tot wat je wel/niet wilt?

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • RetroTycoon
  • Registratie: Juli 2008
  • Laatst online: 22:12
En zaken als <p<p>> ? (geen idee of dit mogelijk is hoor don't kill me O-))

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Hij wil tags strippen en strip_tags() lijkt me daar de functie voor. Hij wil niet totaal verkeerde code rechttrekken (dat doet overigens vaak de editor al voor je ) ) dus om dan met <p<p>> aan te komen lijkt me dan ook niet nodig.

Ik heb gelijk je titel aangepast want wat je had staan was niet echt informatief ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
RetroTycoon schreef op zaterdag 18 april 2009 @ 18:01:
[...]

En zaken als <p<p>> ? (geen idee of dit mogelijk is hoor don't kill me O-))
Heb je t al geprobeerd? :)

Opzich zijn die <p> tags inderdaad wenselijk zoals eerder gezegd is. De grote editors hebben ook uitgebreide configuraties waarin je bijv. br's kan forceren ipv. p's, dan is je probleem al opgelost misschien.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Cartman! schreef op zaterdag 18 april 2009 @ 20:14:
[...]

Heb je t al geprobeerd? :)

Opzich zijn die <p> tags inderdaad wenselijk zoals eerder gezegd is. De grote editors hebben ook uitgebreide configuraties waarin je bijv. br's kan forceren ipv. p's, dan is je probleem al opgelost misschien.
Mwah, imho heb je juist een probleem gecreeerd wanneer je je p's vervangt door een setje br's.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Vinnienerd schreef op zaterdag 18 april 2009 @ 14:27:
ereg_replace kan alles wat jij hier wil:
PHP:
1
ereg_replace('<p\s*(class=)*.*>');


Zoiets denk ik?
POSIX regex functies worden uitgefaseerd in PHP6, je kan beter gebruik maken van PCRE

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Tim_R
  • Registratie: Oktober 2004
  • Laatst online: 16-06 16:27
De strip_tags functie is voor mij precies wat ik nodig had inderdaad! En na het bestuderen van ereg_replace ben ik ook een stuk slimmer geworden ;)

Bedankt!

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Gebruik shift+enter in de editor, wat een <br> genereerd i.p.v. een <p>.

Dit is normaal omdat tekst in een document, normaal gesproken, uit paragrafen bestaat. Kijk maar eens in de krant of vraag het aan de juf van het vak "Nederlands".

Dat web gebruikers graag de <br> gebruiken komt puur uit estetisch belang omdat anders de regel afbreking er "lelijk" uit ziet :P

[ Voor 21% gewijzigd door DJMaze op 20-04-2009 03:11 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Gersomvg
  • Registratie: December 2005
  • Laatst online: 16:07
Vinnienerd schreef op zaterdag 18 april 2009 @ 14:27:
ereg_replace kan alles wat jij hier wil:
PHP:
1
ereg_replace('<p\s*(class=)*.*>');


Zoiets denk ik?
Ereg_replace raad ik ten sterkste af. Ik heb al veel negatieve ervaringen van anderen over de ereg functies gelezen maar ik heb er zelf ook een negatieve ervaring mee. In mijn eigengemaakte forum werd willekeurig bij ongeveer de helft van de pageloads geen tekst weergegeven in de posts (door de eregfuncties in mijn smileyscript). Sindsdien gebruik ik preg_replace. Die is wel stabiel :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
DJMaze schreef op maandag 20 april 2009 @ 03:09:
Gebruik shift+enter in de editor, wat een <br> genereerd i.p.v. een <p>.
:D jij werkt niet met klanten zeker? ;)

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
gersompie schreef op maandag 20 april 2009 @ 12:53:
Ereg_replace raad ik ten sterkste af. Ik heb al veel negatieve ervaringen van anderen over de ereg functies gelezen maar ik heb er zelf ook een negatieve ervaring mee.
De objectieve redenen moet eigenlijk al voldoende zijn: Vervallen support in toekomst, slechtere performance, slechtere char. encoding support.

{signature}


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Cartman! schreef op maandag 20 april 2009 @ 13:03:
[...]

:D jij werkt niet met klanten zeker? ;)
Jawel, en zelfs grote klanten zoals Disney en BMW.
Ik heb de wysiwyg gewoon aangepast dat ie keydown/up afvangt en checkt of shift is ingedrukt en wijzig dan </p><p> in <br> als de klant het echt niet snapt ;)

Maak je niet druk, dat doet de compressor maar

Pagina: 1