![]() |
[PHP] Substr auswerten
Hi,
also, ich habe jetzt bspw. folgenden Lexikoneintrag (Source): Zitat:
Das ganze klappt auch, nur das Problem: Wie bekomme ich das Attribut heraus? Das dürfte mit Regular Expressions funktionieren, nur da hab' ich null Durchblick... Chris |
Hi,
komisches Delphi-Forum, aber jetzt zur möglichen Antwort. ( ![]() Function: mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) RegEx.(perl comp.): erstes Argument: /\[(.*?\=.*?\)])/Uis zweites Argument: \<a href=\"index.php\?\\1\"\>\<\\a> Ich hab' zar nicht probiert, müsste aber stimmen. bye k. |
Zitat:
|
Hi,
danke, aber leider funktioniert es nicht. Vielleicht habe ich auch was falsch gemacht. Deswegen hier mal eben der bei mir stehende Code:
Code:
Achja: Kleines Beispiel, zur Verdeutlichung, was ich genau will:
$text = $row[textText];
preg_replace("/\[(.*?\=.*?\)])/Uis", "\<img src=\"images/link.gif\">\<a href=\"index.php\?\\1\"\>\<\\a>", $text); In der Datenbank: Zitat:
Die ID wird folgendermaßen geholt (Funktions-Sytax):
Code:
Chris
$result = getEntryID($keyw/* Keyword */);
|
Nachdem ich mal den BB-Code-Parser durchgeparst habe ( ;) ), habe ich jetzt was passendes gefunden:
Code:
Problem:
$text = preg_replace("/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU", "<a href=\"index.php?site=lexikon&kid=getThreadID('\\2')\">'\\2'</a>", $text);
Zitat:
Chris |
hi,
schade, das das nicht geklappt hat. hier der Code: $str = 'RAM steht für Random Access Memory. Es wird genutzt in Verbindung mit dem [keyword=Arbeitsspeicher]Arbeitsspeicher[/keyword]. USW USW [keyword=BLah]Blah [/keyword]'; $res = preg_replace("/\[(keyword=.*?)\](.*?)\[\/keyword]/is","<a href=\"index.php?\\1\" > \\2 </a>",$str); Result: RAM steht für Random Access Memory. Es wird genutzt in Verbindung mit dem ![]() ![]() Der Reg Ausdruck funktioniert natürlich nur, wenn das Schlagwort in die tags keyword eingefasst ist z.B. [keyword=Arbeitsspeicher]Arbeitsspeicher[/keyword] |
Hey! Super, danke, werde ich gleich ausprobieren.
Aber eine Frage: Ich will im Link nicht das Keyword stehen haben, sondern lieber das Ergebnis einer Funktion, dass als Parameter z.B. "Arbeitsspeicher" bekommt. Wie ist das möglich? Chris |
preg_replace_callback
hi,
du solltest dich mal mit dem php manual auseinanderstetzen. also hier die lösung deines problems. $str = 'RAM steht für Random Access Memory. Es wird genutzt in Verbindung mit dem [keyword=Arbeitsspeicher]Was ist der Arbeitsspeicher[/keyword]. USW USW [keyword=BLah]BlahBlah [/keyword]'; $res = preg_replace_callback ("/\[(keyword=(.*?))\](.*?)\[\/keyword]/is","ModifyMatches",$str); function ModifyMatches($match=array()){ print_r($match); /* tu etwas mit den treffern */ } Result: Array ( [0] => [keyword=Arbeitsspeicher]Was ist der Arbeitsspeicher[/keyword] [1] => keyword=Arbeitsspeicher [2] => Arbeitsspeicher [3] => Was ist der Arbeitsspeicher ) Array ( [0] => [keyword=BLah]BlahBlah [/keyword] [1] => keyword=BLah [2] => BLah [3] => BlahBlah ) viel spass kristoff |
Hi,
danke, dürfte funktionieren. Wollte ich auchmal, aber leider bin ich durch die Regular Expressions noch nicht durchgestiegen. Mir ist da jetzt aber noch was nich ganz klar. Habe ich das richtig verstanden, dass in der Funktion ModfiyMatches das Array $matches so ist:
Code:
usw.
$matches[2] == "Arbeitsspeicher"
Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz