PDA

Vollständige Version anzeigen : String vergleichen


eRaaaa
30.06.2008, 21:32
Hallo,

ich suche eine Funktion, mit der ich einen String durchsuchen/vergleichen kann.

Bzw, das Problem ist, dass manche User beim Banner buchen , bei der Banner-Url immer den kompletten Quelltext angeben, also mit <a href=....> .... <img src.... > , was natürlich zur Folge hat dass der Banner nicht richtig angezeigt wird. Ich will nun, den String wo die Banner URL eingefügt wird, überprüfen ob der String halt mit http: anfängt, jmd ne Idee ?


/edit:
habs jetzt mit substr gelöst, vllt hat jemand besseren vorschlag?

elseif(substr($burl, 0, 7)!="http://"){
echo "Bitte nur die Banner-URL angeben, nicht den kompletten Quelltext!!";



Gruß
eRa

Xenon
30.06.2008, 22:00
MIt einer If abfragen ob < und > vorkommen :thumb:

breaker
01.07.2008, 08:55
Wieso nicht mit parse_url ?

$string_neu = parse_url($string_alt);
$url = $string_neu['SCHEME'] . $string_neu['HOST'] . $string_neu['PFAD'];

ergibt aus dem Eingegebenen String:
<a href="http://www.domain.foo/pfad/zum/bild/image.gif">tolles bild</a>

ein



http://www.domain.foo/pfad/zum/bild/image.gif

jpwfour
01.07.2008, 10:44
parse url ist aber da denke ich weniger geeignet, wenn die user z.bsp. 2 urls angeben im a tag und im img als source...

um verlässlich die url des banners zu extrahieren, müsste man an sich mit einem regulären ausdruck arbeiten, aber an sich reicht es, zu überprüfen, ob die eingabe "verbotene" zeichen wie < und > enthält, oder gleich mit strip tags, dann verschwindet alles was in html tags steht, damit ist die eingabe leer, und der user bekommt ne fehlermeldung, dass er doch die url angeben sol, und nicht irgendeinen anderen schwachsinn...

substr ist für solche validierungen aber total ungeignet, dass es ja nur einen bestimmten teil des strings vergleicht, somit gibt man dann doch ein zu genaues schema vor (hier ist das vielleicht noch möglich, obwohl die url ja theoretisch nicht zwingend mit hhtp:// beginnen müsste), besser einfach strpos (http://de2.php.net/strpos) verwenden, um zu überprüfen, ob ein < drin vorkommt

Gremlin
01.07.2008, 11:27
Wenn du es mit einem Regexp probieren möchtest:


$regexp = '#href="(?P<link>[^"]+)".+src="(?P<banner>[^"]+)"#s';
if(preg_match($regexp, stripslashes($_POST['bannercode']), $matches)) {
$url = $matches['link'];
$banner = $matches['banner'];
}


da kannst du dann ein Feld einfügen "Bannercode" wo der User den kompletten Code reinkopiert hab ich bei mir im Admin drin weil es komfortabler ist *fg*