AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Substr auswerten

Ein Thema von CalganX · begonnen am 16. Dez 2002 · letzter Beitrag vom 29. Dez 2002
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Substr auswerten

  Alt 16. Dez 2002, 18:38
Hi,
also, ich habe jetzt bspw. folgenden Lexikoneintrag (Source):
Zitat von Irgendwer:
RAM steht für Random Access Memory. Es wird genutzt in Verbindung mit dem [keyword=Arbeitsspeicher]Arbeitsspeicher[/keyword].
So, nun soll der Text "Arbeitsspeicher" als Link erschienen, dieser soll zu einer Datei (index.php) führen und der Link soll Parameter enthalten. Einer davon ist das Attribut von Keyword (in diesem Fall Arbeitsspeicher). (Genauer gesagt eine ID, diese wird aber durch eine Funktion von einem String in eine ID umgeandelt)
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
  Mit Zitat antworten Zitat
kristoff

Registriert seit: 16. Dez 2002
3 Beiträge
 
#2
  Alt 16. Dez 2002, 20:25
Hi,
komisches Delphi-Forum,
aber jetzt zur möglichen Antwort.


(http://www.php.net/manual/en/function.preg-replace.php)

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.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 16. Dez 2002, 21:39
Zitat von kristoff:
Hi,
komisches Delphi-Forum
Eine kleine PHP-Frage zwischendruch hält fit
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 17. Dez 2002, 13:45
Hi,
danke, aber leider funktioniert es nicht. Vielleicht habe ich auch was falsch gemacht. Deswegen hier mal eben der bei mir stehende Code:

Code:
$text = $row[textText];
preg_replace("/\[(.*?\=.*?\)])/Uis", "\<img src=\"images/link.gif\">\<a href=\"index.php\?\\1\"\>\<\\a>", $text);
Achja: Kleines Beispiel, zur Verdeutlichung, was ich genau will:

In der Datenbank:
Zitat von Lexikon:
DENIC vergibt im [keyword=Internet]Internet[/keyword] die .DE-[keyword=Domains]Domains[keyword=Domains].
Im Quellcode:
Zitat von Lexikon-Source:
DENIC vergibt im Internet die .DE-Domains.
Die ID wird folgendermaßen geholt (Funktions-Sytax):
Code:
$result = getEntryID($keyw/* Keyword */);
Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5
  Alt 17. Dez 2002, 20:31
Nachdem ich mal den BB-Code-Parser durchgeparst habe ( ), habe ich jetzt was passendes gefunden:

Code:
  $text = preg_replace("/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU", "<a href=\"index.php?site=lexikon&kid=getThreadID('\\2')\">'\\2'</a>", $text);
Problem:
Zitat von PHP-Parser:
Parse error: parse error in c:\webserver\apache\apache\htdocs\chris-harms.de\sites\lexikon\show_entry.php(13) : regexp code on line 1

Fatal error: Failed evaluating code: 'Arbeitsspeicher' in c:\webserver\apache\apache\htdocs\chris-harms.de\sites\lexikon\show_entry.php on line 13
HELP!!!

Chris
  Mit Zitat antworten Zitat
kristoff

Registriert seit: 16. Dez 2002
3 Beiträge
 
#6
  Alt 26. Dez 2002, 18:36
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 Arbeitsspeicher . USW USW Blah

Der Reg Ausdruck funktioniert natürlich nur, wenn das Schlagwort in die tags keyword eingefasst ist z.B.

[keyword=Arbeitsspeicher]Arbeitsspeicher[/keyword]
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 27. Dez 2002, 14:10
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
  Mit Zitat antworten Zitat
kristoff

Registriert seit: 16. Dez 2002
3 Beiträge
 
#8

preg_replace_callback

  Alt 28. Dez 2002, 14:24
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9
  Alt 29. Dez 2002, 13:12
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:
$matches[2] == "Arbeitsspeicher"
usw.

Chris
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz