login  Naam:   Wachtwoord: 
Registreer je!
 Forum

str_replace foutje

Offline Warbringer - 15/01/2007 14:48
Avatar van WarbringerOnbekend Goedendag mensen,

  1. $invoer = $_POST['textarea4'];
  2. $invoer = str_replace("[URL]","<a href=\"".$_POST['textarea4']."\" style=\"text-decoration: none; color: #000000;\">", $invoer);
  3. $invoer = str_replace("[/URL]","</a>", $invoer);
  4. $query = "INSERT INTO HEAVENSDOOR (links) VALUES ('".$invoer."')";
  5. mysql_query($query);


Wat er gebeurt: in mijn SQL database maakt hij het volgende ervan
  1. <a href="[URL]http://www.mijnsite.nl.nl</a>" style="text-decoration: none; color: #000000;">http://www.mijnsite.nl</a>


Hij zet dus alsnog de [URL] ervoor, en dat moet niet... hoe kan ik dit fixen? iemand een idee of suggestie?

Groetjes

19 antwoorden

Gesponsorde links
Offline GTW - 15/01/2007 14:50 (laatste wijziging 15/01/2007 14:54)
Avatar van GTW Gouden medaille

PHP gevorderde
misschien dat je zoiets beter met reguliere explressies kan doen.
ik heb er 1 klaarliggen, ik zal hem even opzoeken en posten.

Edit:
This should do the trick:
  1. <?php
  2. $invoer = htmlentities($_POST['textarea4']);//deze invoer ook beveiligen tegen SQL injection!
  3. $invoer = preg_replace("#\[url\](.*?)\[/url\]#si","<a href=\"\\1\" target=\"_blank\" style=\"text-decoration:none; color:#000000;\">\\1</a>", $invoer);
  4. $query = "INSERT INTO HEAVENSDOOR (links) VALUES ('".$invoer."')";
  5. mysql_query($query);
  6. ?>


alles wat tussen [url]http:// en [/url] staat zal worden vervangen door <a href=\"\\1\" target=\"_blank\" style=\"text-decoration:none; color:#000000;\">\\1</a>
en de link zal kloppen 
Offline Warbringer - 15/01/2007 14:52 (laatste wijziging 15/01/2007 14:55)
Avatar van Warbringer Onbekend reguliere expressies??? naja dat wordt dus weer wat bij leren haha dankjewel alvast!!!

--edit--


whoaw... dat is iets wat ik niet snap haha..

  1. ("#\[url\](.*?)\[/url\]#si
Offline GTW - 15/01/2007 14:56 (laatste wijziging 15/01/2007 14:57)
Avatar van GTW Gouden medaille

PHP gevorderde
Daar wordt gekeken of er [url]http:// én [/url] in de text staat. zo ja, dan wordt het vervangen door de andere link.

edit:
spelfout weg XD
Offline Warbringer - 15/01/2007 14:57 (laatste wijziging 15/01/2007 14:59)
Avatar van Warbringer Onbekend lol wazig allemaal whaha, zal het eens proberen hartstikken bedankt!!!

maaruh verder, het zou eigenlijk toch ook moeten werken zoals ik het deed of gaat dat niet lukken denk je?

en zou iemand misschien even kunnen uitleggen in het kort wat htmlentities doet precies? die pakt alles wat 'html' is en schijft dit puur over of zo?
Offline GTW - 15/01/2007 15:00 (laatste wijziging 15/01/2007 15:04)
Avatar van GTW Gouden medaille

PHP gevorderde
met str_replace is het ook wel te doen, maar je plaatst $_POST['textarea4'] in je url al vóordat je de [url] er uithaalt.
dus het kan wel, maar dan moet je functie dus aangepast worden.
De code die ik gaf is korter en kijktook nog of [url] én [/url] in de string staan.

Edit:
Deze functie zet < om in &lt;, > in &gt;, & in &amp;, " in &quot;, en meer van de HTML karakters. Dan kan je query dus niet vern**kt worden door iemand die leuk denk te zijn door een " in het vakje te paatsen
Offline Warbringer - 15/01/2007 15:03
Avatar van Warbringer Onbekend ah ja nou zie ik de fout stom stom lol dankjewel 
Offline Thomas - 15/01/2007 15:04
Avatar van Thomas Moderator Euh, en wat als iemand zijn bericht nu eens wil wijzigen?

Sla het origineel op, en voer dit soort omschrijf-acties alleen uit bij het afdrukken.

Hier kom je nog wel achter anders .
Offline Warbringer - 15/01/2007 15:16
Avatar van Warbringer Onbekend
  1. <?php
  2. require("db.php");
  3. mysql_connect("$server","$username","$password");
  4. mysql_select_db("$database");
  5. $query = mysql_query("SELECT * FROM HEAVENSDOOR ORDER BY id DESC LIMIT 0,15");
  6. while($data = mysql_fetch_object($query))
  7. // opmaak van de ingevoerde tekst
  8. $input = $data->links;
  9. $input = str_replace("[URL]","<a href=>", $input);
  10. $input = str_replace("[/URL]","</a>", $input);
  11. // einde van de opmaak
  12. {
  13. print "".$input."<br>";
  14. }
  15. ?>


Hij geeft nu alleen de link weer met ID1 in de database... de rest weergeeft hij niet... wederom mess ik alles up hier?  
Offline Thomas - 15/01/2007 15:19
Avatar van Thomas Moderator je hebt je accolades op de verkeerde plaats staan?

als je het volgende doet:
while(...)
a
{
b
c
d
}

Wordt alleen a in een while-lus uitgevoerd.

Doe het dus als volgt:
while(...)
{
a
b
c
d
}

En inspringen in je code lijkt mij in jouw geval ook geen overbodige luxe .
Offline Warbringer - 15/01/2007 15:52 (laatste wijziging 15/01/2007 15:54)
Avatar van Warbringer Onbekend ja heb het nu gezien en alles in orde nu, hartstikken bedankt mensen heb toch weer het een en ander geleerd nu *thumbs up*.

Rest me nog een vraagje.
Hij geeft nu elke keer de regels mooi weer, maar alleen de 1e die wordt toegevoegt is een hyperlink de rest niet...

mijn code is te vinden op http://www.plaatscode.be/3827/

Hopelijk ziet iemand waar ik de mist in ga.


Citaat:
En inspringen in je code lijkt mij in jouw geval ook geen overbodige luxe .


I know maar het is maar voor de practice ;)
Offline Kr4nKz1n - 15/01/2007 15:53 (laatste wijziging 15/01/2007 15:55)
Avatar van Kr4nKz1n Onbekend Zoals FangorN al zet tabs. En haal de quotes bij de connectie even weg.
  1. <?php
  2. require("db.php");
  3. mysql_connect($server,$username,$password);
  4. mysql_select_db($database);
  5. $query = mysql_query("SELECT links FROM HEAVENSDOOR ORDER BY id DESC LIMIT 0,15");
  6. while($data = mysql_fetch_object($query))
  7. {
  8.  
  9. // opmaak van de ingevoerde tekst
  10. $output = $data->links;
  11. $output = str_replace("[URL]","", $output);
  12. $output = str_replace("[/URL]","", $output);
  13. // -------------------------------->
  14.  
  15. $input = $data->links;
  16. $input = str_replace("[URL]","<a href=\"".$output."\"style=\"text-decoration: none; color: #000000;\">", $input);
  17. $input = str_replace("[/URL]","</a>", $input);
  18. // einde van de opmaak
  19.  
  20. print $input."<br />";
  21. }
  22. ?>
Offline Warbringer - 15/01/2007 15:58 (laatste wijziging 15/01/2007 16:01)
Avatar van Warbringer Onbekend ah wist niet dat je een lege regel mag hebben,
was mij verteld dat je dan 'errors' kan krijgen haha, zal het even proberen dankjewel!
Offline Kr4nKz1n - 15/01/2007 16:00
Avatar van Kr4nKz1n Onbekend Dit is nog niet de oplossing. Maar dit is netter gemaakt. Ik zit nog even te zoeken naar een oplossing.

Ik zat al aan explode te denken maar dat gaat ook niet werken.
Offline Warbringer - 15/01/2007 16:01
Avatar van Warbringer Onbekend haha, ja... ik snap alleen niet waarom hij de URL niet meeneemt...
zou toch gewoon moeten werken zoals ik het hier heb staan toch?
Offline Ibrahim - 15/01/2007 16:02
Avatar van Ibrahim PHP expert
  1. <?php
  2. require("db.php");
  3. mysql_connect($server,$username,$password);
  4. mysql_select_db($database);
  5. $query = mysql_query("SELECT * FROM HEAVENSDOOR ORDER BY id DESC LIMIT 0,15");
  6. while($data = mysql_fetch_object($query))
  7. {
  8. // opmaak van de ingevoerde tekst
  9. $data->links = preg_replace_replace("\[URL](.*?)\[/URL]","<a href='\1'>\1</a>", $input);
  10. print $data->links."<br>";
  11. }
  12. ?>
Offline Kr4nKz1n - 15/01/2007 16:04
Avatar van Kr4nKz1n Onbekend Nee, het klopt dat je nu maar 1 link aanmaakt.

Wat is precies de bedoeling? Wat voor `n berichten gaan hier doorheen?

Citaat:
Dit is mijn website. [url]http://www.sitemasters.be[/url]. Willen jullie deze keuren?

En voor reclame nogmaals [url]http://www.sitemasters.be[/url]

Dank u wel


Dit soort berichten?
Offline Warbringer - 15/01/2007 16:07 (laatste wijziging 15/01/2007 16:08)
Avatar van Warbringer Onbekend het is eigenlijk... je logt in als admin.
in het menu kan je links invoeren die hij in de SQL database zet.
Deze worden georderd door ID's dus ID1, ID2, ID3 enz enz.

De links worden opgeslagen door de gebruiker met [URL][/URL] commando, mits hij er meteen een link van wilt maken anders wordt hij opgeslagen als platte tekst.

Wat ik nu wil is de hele lijst uit de SQL trekken, en weergeven zoals ik hier doe. Dat werkt perfect MAAR de [URL] en [/URL] moeten vervangen worden, dit werkt ook perfect MAAR hij maakt er geen hyperlink van en dat klopt dus niet...


Betreffend siliecom14's post, ik snap daar niks van haha voor mij is dat turks of japans lol, zou je het misschien in mijn taal kunnen doen of gaat dat niet lukken? want jij hebt wat commando's erin die ik nog nooit gezien heb   
Offline Kr4nKz1n - 15/01/2007 16:12 (laatste wijziging 15/01/2007 16:14)
Avatar van Kr4nKz1n Onbekend Maar nu weet ik nog niet de exacte opmaak van database record.
Zijn het achter elkaar
[url]http://www.sitemasters.be[/url][url]http://www.sitemasters.be[/url][url]http://www.sitemasters.be[/url][url]http://www.sitemasters.be[/url]
Of staat er tekst tussen?
Offline Warbringer - 15/01/2007 16:17
Avatar van Warbringer Onbekend Heb hem al, om de een of andere rede viste de SQL Database de

[URL] en [/URL]

tags eruit... vraag me niet waarom.. ik 'empty' de table en probeerde het nog eens en nu werkt het perfect...

sorry whahaha in iedergeval iedereen echt hartelijk bedankt voor de snelle en uitstekende hulp!!!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.246s