[PHP] preg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik heb een stukje code geschreven die goed werkt. Alleen het probleem is dat hij het maar 1 keer doet, en ik heb van alles geprobeerd maar ik krijg het gewoon niet voor elkaar.

Wat is probeer is het volgende. Ik heb de volgende HTML code:

<a href=www.test.nl>test</a> en dan nog <font color=#ff0000>iets</font>

Deze regel wil ik veranderen in:

<a href="www.test.nl">test</a> en dan nog <font color="#ff0000">iets</font>

Er moeten dus " komen na het = teken en voor het afsluiten van de HTML tag (>);

Ik heb hiervoor de volgende regel geschreven in PHP:
code:
1
2
$test = "<a href=www.test.nl>test</a> en dan nog <font color=ff0000>iets</font>";
echo preg_replace('/<(.*)=(.*)>(.*)<\/(.*)>/i','<\\1="\\2">\\3</\\4>',$test);

De output die ik krijg is:
code:
1
<a href=www.test.nl>test</a> en dan nog <font color="ff0000">iets</font>

Wat doe ik verkeerd? Want hij pakt alleen de laatste HTML tag en niet de eerste??

Voor de informatie, ik heb uren gezocht op het forum en met Google maar kan gewoon niks hierover vinden.

Acties:
  • 0 Henk 'm!

  • muis
  • Registratie: Oktober 2001
  • Laatst online: 18-11-2022
is daar niet de functie preg_replace_all voor?

Een vergissing is menselijk maar om er een puinhoop van te maken heb je een computer nodig (met mij erachter)


Acties:
  • 0 Henk 'm!

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

Als modifier 'U' gebruiken, zie ook deze pagina... Houd je er trouwens rekening mee dat sommigen wel zelf de aanhalingstekens neerzetten?

Schaadt het niet, dan baat het niet


Acties:
  • 0 Henk 'm!

  • G33rt
  • Registratie: Februari 2002
  • Laatst online: 22-06-2022
Seven of Nine schreef op vrijdag 19 augustus 2005 @ 12:16:
Als modifier 'U' gebruiken, zie ook deze pagina... Houd je er trouwens rekening mee dat sommigen wel zelf de aanhalingstekens neerzetten?
Je kunt natuurlijk ook alles behalve '' gaan matchen :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Seven of Nine schreef op vrijdag 19 augustus 2005 @ 12:16:
Als modifier 'U' gebruiken, zie ook deze pagina... Houd je er trouwens rekening mee dat sommigen wel zelf de aanhalingstekens neerzetten?
Helemaal top man!! /U erachter en hij doet het. Ik had deze pagina trouwens nog niet gezien, bedankt hiervoor!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mag ik nogmaals benadrukken wat Seven of Nine en G33rt al zeggen? Je regexp is op deze manier niet echt waterdicht; ik zou hem nog wat aanpassen naar aanleiding van het commentaar hierboven. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op vrijdag 19 augustus 2005 @ 13:11:
Mag ik nogmaals benadrukken wat Seven of Nine en G33rt al zeggen? Je regexp is op deze manier niet echt waterdicht; ik zou hem nog wat aanpassen naar aanleiding van het commentaar hierboven. :)
Okay zal ik doen! Voor nu werkt het prima. Ik heb de code inmiddels veranderd in:
code:
1
preg_replace('/<(.*)=(.*)>/U','<\\1="\\2">',$test);

Maar andere tips zijn natuurlijk welkom!

PS, ik moet erbij zeggen dat het gaat om een simpele tekst editor die slechts enkele html tags kan aanmaken. B.v. <a href=www.link.nl>link</a> of <font color=#ff0000>tekst</font>. De tekst die je aanmaakt wordt in Flash ingelezen, maar Flash wil " zien in de HTML tags. Dus vandaar dat ik een simpele oplossing nodig had.

Acties:
  • 0 Henk 'm!

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 15:34
Is het mogelijk om de tekst-editor aan te passen? Het is natuurlijk veel netter om bij het aanmaken van die tags al de " toe te voegen.

[ Voor 4% gewijzigd door Eärendil op 19-08-2005 16:47 ]


Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
Verwijderd schreef op vrijdag 19 augustus 2005 @ 12:12:
<a href=www.test.nl>test</a> en dan nog <font color=#ff0000>iets</font>

Deze regel wil ik veranderen in:

<a href="www.test.nl">test</a> en dan nog <font color="#ff0000">iets</font>
.
No offence, maar voor die enkel die quotes een preg_replace te gaan gebruik... 'k weet het niet hoor, what's the use, zet ze dan in 1 keer erbij ofzo eh. Moest je nu met BB tags werken ofzo zou'k het nog kunnen aannemen, maar in dit geval vind ik het "vrij" nutteloos.

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 15-09 21:46
imp4ct schreef op vrijdag 19 augustus 2005 @ 20:09:
[...]


No offence, maar voor die enkel die quotes een preg_replace te gaan gebruik... 'k weet het niet hoor, what's the use, zet ze dan in 1 keer erbij ofzo eh. Moest je nu met BB tags werken ofzo zou'k het nog kunnen aannemen, maar in dit geval vind ik het "vrij" nutteloos.
Hij geeft aan dat het wordt uitgevoerd op content uit een teksteditor, dus het is niet zomaar een statische tekst.

Verder zou dit eigenlijk al in de editor moeten gebeuren, Zoals Earendil ook al zegt.

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Overigens vreemd dat Flash er zo moeilijk over doet; zolang een attribuut-waarde enkel uit name-karakters bestaat zijn quotes optioneel in HTML, dus <a href=foo.html>iets</a> is valide HTML (http://www.test.com of #aabbcc daarentegen moeten tussen quotes, anders is de HTML ook al niet valid, en dus je editor broken).

Verder: hoe wou je het gaan aanpakken op het moment dat een tag 2 of meerdere attributen heeft?
Ik zoe dan eerder voor een 2-ledige aanpak gaan: eerst de tags uit de code vissen, en binnen die tags naar attributen zoeken.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik maak gebruik van execCommand's. Als je hiermee een link aanmaakt zet hij er geen quote bij. Dus vandaar dat ik dat achteraf moet doen en niet via m'n editor kan doen (wat absoluut netter is).

Ik ben net inderdaad op het probleem gestoten dan als er twee attributen in een html-tag voorkomen mijn script niet werkt :( Dus ik zal eerst elke html-tag eruit vissen, ontleden en elke attribute appart aanpassen en de quotes erbij zetten.

Hopelijk hebben ze het probleem van de quotes in de nieuwe flash versie aangepast!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zo is het trouwens ook niet mogelijk om <strong> of <em> te gebruiken met flash. Ook deze waarden moet ik eerst omzetten naar <b> en <i> wil flash ze kunnen begrijpen.
Pagina: 1