URL: https://www.overclockers.at/coding-stuff/regex_formulierungsproblem_123381/page_1 - zur Vollversion wechseln!
also, ich habe folgenden string
das ist ein <a href="http://www.test.at">test</a> blabla
gefunden werden soll mit der funktion preg_match '<a href="http://www.test.at">'
im moment schaffe ich es leider nur alles bis inkl </a> zu finden, ich glaube es liegt am (nicht) ecapen mancher zeichen, mein ansatz:
achja, verwendet wird php 4.0.6 und das kann auch nicht geandert werden (sonst gaebe es imho unkompliziertere moeglichkeiten)
$suchstring enthaelt die gesuchte zeichenkette als string
$bla='<a href=.*$suchstring.*"> ';
if(preg_match($bla,$suchhightext,$fehlertreffer))
nur leider springt er immer gleich in den else zweig, obwohl es so laut einem testprogramm für regex funktionieren muessten, deswegen tippe ich ja auf escape-fehler.
waere nett wenn mir jemand helfen koennte.
EDIT: laut manual muesst ich ja irgendwie mit .?U oder so die greediness begrenzen koennen aber ich habs nicht zusammengebracht ;(
hallo!Zitat von BiG_WEaSeLalso, ich habe folgenden string
das ist ein <a href="http://www.test.at">test</a> blabla
gefunden werden soll mit der funktion preg_match '<a href="http://www.test.at">'
im moment schaffe ich es leider nur alles bis inkl </a> zu finden, ich glaube es liegt am (nicht) ecapen mancher zeichen, mein ansatz:
achja, verwendet wird php 4.0.6 und das kann auch nicht geandert werden (sonst gaebe es imho unkompliziertere moeglichkeiten)
$suchstring enthaelt die gesuchte zeichenkette als string
$bla='<a href=.*$suchstring.*"> ';
if(preg_match($bla,$suchhightext,$fehlertreffer))
nur leider springt er immer gleich in den else zweig, obwohl es so laut einem testprogramm für regex funktionieren muessten, deswegen tippe ich ja auf escape-fehler.
waere nett wenn mir jemand helfen koennte.
EDIT: laut manual muesst ich ja irgendwie mit .?U oder so die greediness begrenzen koennen aber ich habs nicht zusammengebracht ;(
Code: PHP//erstamal suchst du nach dem grundgerüst: '/<a href=".*">/U' //jetzt wollen wir das suchwort ham: '/<a href=".*('.preg_quote($s,'/').').*">/U' //hast du mehrere suchbegriffe in einem array, machst du es so: '/<a href=".*('.preg_quote(implode('|',$a_s).'),'/').*">/U' //ps: sagt aber keiner, dass nicht auch andere attribute,whitespaces, usw. drin sind - aber der pattern muss nicht unbedingt funktionieren (er *sollte* zwar, muss aber nicht - kann atm net testen...): '/<a.*href=".*('.preg_quote(implode('|',$a_s).'),'/').*".*>/U'
GANZ wichtig in diesem fall ist auch, daß der quantifier "*" per default "greedy" ist, d.h. soviele zeichen matcht wie möglich. das ist genau das, was du nicht willst. entweder du sagt dem re-engine, daß du einen nicht-greedy match machen willst, indem du ein "?" hinten dran hängst (also zb /.*?/), oder du gibst das "." etwas genauer an, zb indem du sagst, daß du alles außer anführungszeichen matchen willst (das wäre dann /[^"]*/). du kannst natürlich beides kombinieren (/[^"]*?/).
oder du bist "GANZ" schlau, und gibst den U-Modifier an, welcher den gesamten pattern auf ungreedy stellt - oh, was seh ich denn da bei meinem bespiel...Zitat von dfxGANZ wichtig in diesem fall ist auch, daß der quantifier "*" per default "greedy" ist, d.h. soviele zeichen matcht wie möglich. das ist genau das, was du nicht willst. entweder du sagt dem re-engine, daß du einen nicht-greedy match machen willst, indem du ein "?" hinten dran hängst (also zb /.*?/), oder du gibst das "." etwas genauer an, zb indem du sagst, daß du alles außer anführungszeichen matchen willst (das wäre dann /[^"]*/). du kannst natürlich beides kombinieren (/[^"]*?/).

oh, das kannt ich noch nicht. in perl gibt's das nämlich nicht, scheint php-spezifisch zu sein. man lernt nie aus 
ok, danke, hab jetzt zeit hier wieder zu antworten, wenn ich mir das so anschaue, dann hatte ich es ja fast schon soweit (nicht die version die ich hier gepostet hab (da warn zig fehler drinnen, ich mein, ' parsed keine variablen, das is eh klar, hatte ein brett vorm kopf ))
danke watchout fuer deine geduldige hilfe 
jo, falls was net funkt -> eh scho wissenZitat von BiG_WEaSeLok, danke, hab jetzt zeit hier wieder zu antworten, wenn ich mir das so anschaue, dann hatte ich es ja fast schon soweit (nicht die version die ich hier gepostet hab (da warn zig fehler drinnen, ich mein, ' parsed keine variablen, das is eh klar, hatte ein brett vorm kopf ))
danke watchout fuer deine geduldige hilfe

jaja, nein, geht eh alles, ich hab wohl nur einen groben denkfehler drinnen gehabt, so eine aehnliche regex hatte ich schon mal, nur anscheinend war im restlichen code auch ein fehler, ich dachte nur dauernd es lag an der regex
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026