Per PHP etwas aus einem String auslesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
ansatz
array
beschreibung
bestimmen
code
dank
dokumentation
fehlersuche
http
manual
match
not
offset
position
schau
stehen
syntax
text
url
-
Moin,
ich hab in so fern ein Problem. Ich habe einen Text, namentlich $text , und irgendwo in diesem Text befindet sich folgende Zeile :
[url=Adresse]Beschreibung[/url]
Jetzt w?rde ich gerne aus dem $text rauslesen, ob einmal die URL-Tag in dem Text drin ist und zweitens dann die Adresse und Beschreibung auslesen.
Wisst ihr wie das geht?
mace -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du kannst mit einem Filter nach dem Vorkommen von markanten Textzeichen in der Variablen suchen lassen.
Anschlie?end kannst Du in der Variablen die Position bestimmen und die gew?nschten Stellen "herauskopieren" und in eine neue Variablen "reinsetzen".
Sinnvolle und umfassende Erkl?rungen hierzu findets Du hier:
http://www.schattenbaum.net/php/ -
Moin, moin (ganz fr?her Moin )!
Hier mal ein Ansatz, f?r Adresse und Beschreibung:
preg_match("|\[url=([\]]{1,})\]([\[]{1,})\[\url]|", $text, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
Schau dir dann mal das Array $matches an, dort m?ssten der
gesamte Suchstring ($matches[0][1]),
die "Adresse" ($matches[1][1]) und
die "Beschreibung" ($matchse[2][1]) stehen.
Weitere Infos unter:
http://de2.php.net/manual/de/function.preg-match.php
MfG
alopex -
Schonmal danke,
aber wenn ich das jetzt ausprobiere steht bei mir :
Warning: Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 31 in /www/htdocs/etuel/_include/_bb.php on line 32
Der Code selber ist jetzt :
preg_match("|\[url=([\]]{1,})\]([\[]{1,})\[\url]|", $beitragstext, $matches, PREG_OFFSET_CAPTURE); $beitragstext = str_replace($matches[0][1],'<a href='.$matches[1][1].'>'.$matches[2][1].'</a>',$beitragstext);
mfg mace
-
Tschuldschung, mei F?hler!
Nat?rlich muss es "...\[/url\]" hei?en und nicht "...\[\url\]".
Aus dem Backslash "\" vor dem kleinen "u" muss ein Slash "/" werden. -
Schonmal danke, aber irgendwas klappt immer noch nicht.. ?)
Ich hab mal das ausprobiert :
preg_match("|\[url=([\]]{1,})\]([\[]{1,})\[/url]|", $beitragstext, $matches, PREG_OFFSET_CAPTURE); $beitragstext = str_replace($matches[0][1],'<a href='.$matches[1][1].'>'.$matches[2][1].'</a>',$beitragstext);
Wenn ich das mache, kommt aber nur das heraus
Adresse
Dann hab ich mal das ausprobiert :
preg_match("|\[url=([\]]{1,})\]([\[]{1,})\[/url]|", $text, $matches,PREG_OFFSET_CAPTURE); print($matches[0][1]); print($matches[1][1]); print($matches[2][1]);
Da kam als Ausgabe gar nichts..
mfg Mace -
Sorry, sorry, sorry!
Aber meine urspr?ngliche Antwort habe ich zu einer absolut unchristliche Uhrzeit verfasst, und da sind mir wohl ein paar Fehler unterlaufen:
Neuer RegExp-Versuch:
preg_match("|\[url=([\]]{1,})\]([\[]{1,})\[/url\]|", $text, $matches, PREG_OFFSET_CAPTURE); print_r($matches);
Treffer-Array:
Schau dir dann mal das Array $matches an, dort m?ssten der
gesamte Suchstring ($matches[0][0]),
die "Adresse" ($matches[1][0]) und
die "Beschreibung" ($matches[2][0]) stehen.
Wenn du noch nie mit "regul?ren" Ausdr?cken (hier Perl-Syntax) gearbeitet hast, ist das nat?rlich erstmal alles ziemlich unverst?ndlich. Zur Fehlersuche ist der print_r()-Befehl sehr n?tzlich, der stellt das ganze Array $matches in einer Baumstruktur dar, dort sieht man dann auch, welche Indizes verwendet werden m?ssen, um die richtigen Werte auszulesen. Au?erdem lohnt sich ein Blick in die Server-Errorlogs (zumindest unter Windoze).
Funktions-Dokumentation:
http://de2.php.net/manual/de/function.preg-match.php
PCRE-Dokumentation (nur englisch):
http://de.php.net/manual/de/reference.pcre.pattern.syntax.php
MfG
alopex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage