PHP strpos???
-
tagchen...
ich verzweifel langsam hier.
ich habe einen string:$x="a <b> c <d> <e>";
in den eckigen Klammer <> stehen emailadressen, die ich versuche zu filtern und dann in eine datenbank einzuschreiben.
aber irgendwie bekomme ich immer nur die erste also in dem beispiel das "b".ich kann machen was ich will an "d" oder "e" komme ich gar nicht ran
hier mal mein verf... quelltext. habe zur zeit komplett den überblick verloren, von daher wird der code etwas sehr sehr wirr sein.$fertigemail=""; // $_REQUEST["email"] $x="a <c> b <d> <e>"; // Anzahl an '<' $anz=substr_count($x, '<'); echo "Anzahl <: ".$anz."<br>"; $findMich = '<'; // Länge von $x $lange=strlen($x); echo "Länge von x: ".$lange."<br><br>"; // Neudefinition der Variablen $h=$x; if ($anz!="0") { for ($b=0; $b<$anz; $b++) { $lange=strlen($h); echo "Länge von h: ".$lange."<br>"; echo "h: ".$h."<br>"; $pos = strpos($h, $findMich); if ($pos === false) { echo "Der Stringg '$findMich' wurde nicht im String '$meinString' gefunden"; } else { echo "Der Stringg '$findMich' wurde im String '$meinString' gefunden"; echo " und steht an Stelle $pos"; $finde = '>'; $pos2=strpos($h, $finde); echo "POS2: ".$pos2."<br>"; for ($a=$pos+1; $a<$pos2; $a++) { $fertigemail[$b]=$fertigemail[$b].$h[$a]; } echo $fertigemail[$b]."<br><br>"; $h==""; for ($z=$pos2; $z<=$lange; $z++) { $h=$h.$x[$z]; } } } }
wäre schön wenn sich jmd dieses wirr warr mal anschauen könnte. Vielen dank für eure mühe und hilfe!
THX a lot bart
PS: mache meinen Spruch alle Ehre...
-
preg_match_all("|<([^>]+)>|U", $x, $fertigemail);
Danach hast du in $fertigemail[1] ein Array mit den ganzen Treffen - hoffe, dir ist das nicht zu kurz
-
nabend...
okay werde das mal ausprobieren.
auch wenn deine antwort kurz war, danke erstmal.
kannst du mir vielleicht sagen, was ich falsch gemacht habe (ausser allem??)
ne mal im ernst, ist bestimmt zu umständlich was ich machte. aber müsste das nicht trotzdem funzen. oder hab ich echt einen denkfehler???THX a lot
-
herrliche welt...
danke schön. genau nach dem habe ich gesucht!!!
funzt wunderbar. THX a lot
-
Bart Simpson schrieb:
kannst du mir vielleicht sagen, was ich falsch gemacht habe (ausser allem??
)
Du hast dich in den letzten paar Zeilen etwas verhaspelt:
1.) $h==""; -> $h = "";
2.) pos2 -> pos2+1 // sonst fängt dein String mit dem > an und die weiteren Schleifendurchläufe sind Müll
3.) h.x[z]; // hier greifst du auf $x zu, deine ermittelten Positionen beziehen sich aber auf $h -> du musst eine weitere Variable einführung in der du mit $h den String zusammensetzt und diesen dann nachher wieder nach $h zurückkopierenAnm.:
1.) Um deinen String vor der Ausgabe noch ein htmlentities packen, dann siehst du auch die < und >
2.) Teil-Strings kannst du dir eleganter mit substr basteln...
3.) du kannst mit .= etwas an einen String anhägen
-
danke für die antwort und hilfe, werde mich da gleich nochmal drüber setzen.
habe aber schon wieder das nächste problem.
habe nen string der folgendermaßen aufgebaut ist$str="<a>link1</a> bla bla <br> <a>Link2</a>";
den will ich jetzt mittels str_replace zu
$str="<a href='link1' target='_blank'>link1</a> bla bla <br> <a href='link2' target='_blank'>link2</a>";
umbauen.
habe das problem das die verlinkung / das Ersetzen nur beim 2. link funktioniert.
ich weiß zwar ungefähr wie es gehen müsste, bekomme es aber selber nicht hin.... $anz=substr_count($_REQUEST["nachricht"], '<a>'); if ($anz!="0") { preg_match_all("|<a>([^>]+)</a>|U", $_REQUEST["nachricht"], $fertigemail); $h=$_REQUEST["nachricht"]; $d=count($fertigemail[1]); for ($g=0; $g<$d; $g++) { for ($zz=0; $zz<$anz; $zz++) { $m=$zz-1; if ($zz!="0") { $new[$zz]=str_replace('<a>'.$fertigemail[1][$g].'</a>','<a href='.$fertigemail[1][$g].' target=_blank>'.$fertigemail[1][$g].'</a>',$new[$m]); } else { $new[$zz]=str_replace('<a>'.$fertigemail[1][$g].'</a>','<a href='.$fertigemail[1][$g].' target=_blank>'.$fertigemail[1][$g].'</a>',$h); } } } } $a=0; while ($email=mysql_fetch_Array($emailsu)) { $empfang=$email["n_email"]; $betreff=$_REQUEST["betre"]; $message="<html><body><table><tr><td>".$_REQUEST["betre"]."<br><br></td></tr><tr><td>".$new[$anz-1]."</td></tr></table></body></html>"; $from="From:info@xxxxxxx.de\n"; $from .= "X-Mailer: PHP/" . phpversion(). "\n"; $from .= "X-Sender-IP: $REMOTE_ADDR\n"; $from .= "Content-Type: text/html"; mail($empfang, $betreff, $message, $from); $a++; } header("location:ok.php?art=".$_REQUEST["art"]."&treffer=".$a."");
ich habe das gefühl irgendwas kleines habe ich übersehen, oder das was oben steht ist absoluter müll. ich denke eher zweiteres.
irgendwie sehe ich den wald vor lauter bäumen nicht.
ich hoffe ihr könnt mir nochmal helfen und danke schonmal im voraus.
und sorry für den mist den ich da oben verzapft habe.
thx a lot
bart
-
Hab' mir Deinen Code jetzt nicht weiter angesehen, aber warum machst Du es nicht einfach so?
$str = preg_replace("/<a>([^>]*)<\/a>/", "<a href=\"$1\" target=\"_blank\">$1</a>", $str);
-
tagchen...
ja so könnte ich das auch machen bzw habe es auch so realisiert!
danke für die antworten und eure Hilfe!
thx a lot bart