php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 03-06-2004, 23:06
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard [REGEX] Platzhalter in Datenbank ersetzen

Hallo zusammen

ich grübel schon seit ein paar Stunden über ein Problem nach. Von der Art warscheinlich wie hier nur halt mit einer DB deshalb auch das neue Thema (also bitte nicht schlagen ).

Problem:
Ich will Platzhalter in der Art: [[meinWord]] Die sich im Text befinden, der ebenfalls in einer DB gespeichert ist mit einem Link unterlegen.


Beispiel:
DB-Text: Bitte nutzt [[Google]] als Suchmaschine
wird zu:
Bitte nutzt :google als Suchmaschine


Ich möchte jetzt nur nicht sowas wie:
$returncontent=str_replace("[[irgendwas]]","irgendwas_mit_link",$returncontent);

für jedes Suchwort anlegen müssen.


Die DB sieht bei mir so aus:

2 Spalten:
1. Suchwort
2. Link

hat jemand eine Idee wie man das bewerkstelligen könnte? Oder auch nur einen kleinen Tip der mir weiterhelfen könnte? Denn mir fällt echt nix mehr ein :dontknow

Edit:
Beispiel hinzugefügt

Geändert von Bastian_W (03-06-2004 um 23:16 Uhr)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 03-06-2004, 23:12
Marskuh
 Junior Member
Links : Onlinestatus : Marskuh ist offline
Registriert seit: Jun 2004
Beiträge: 80
Marskuh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da ich mich mit strings noch nich so auseinandergesetzt habe, halte ich str_replace am sinnvollsten...

also ich würde
alle suchwörter aus der DB selektieren und in nen array packen

$array['id'][]
$array['suchwort'][]
$array['link'][]

so dann durchläufste mit ner schleife alle suchwörter und guckst ob diese im content vorhanden sind... wenn ja --> strreplace

also

for(....)
{
$text .= str_replace("[[".$array['suchwort'][$i]."]]", $array['suchwort'][$i], $text)
}

ansonsten mussu dir ne andere variante ausdenken

edit:
ich seh grad dass deine tablle nur 2 spalten hat...
... ich empfehle dir Primärschlüssel zu verwenden, sonst wirds irgendwann schwer deine Datensätze eindeutig identifizieren zu können

hoffe konnte helfen
Marskuh
Mit Zitat antworten
  #3 (permalink)  
Alt 03-06-2004, 23:23
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm,

ist auf jedenfall mal eine gute Idee.

Wenn ich es richtig verstanden habe dann soll ich die Schleife solange durchlaufen lassen wie ich einträge in der DB habe... halt anhand des Primärschlüssel. Die Idee klingt echt mal nicht schlech. Dauert aber je nach einträgen ziemlich lange oder???
__________________
require_once('gehirn_v_02.php');
Mit Zitat antworten
  #4 (permalink)  
Alt 03-06-2004, 23:40
Marskuh
 Junior Member
Links : Onlinestatus : Marskuh ist offline
Registriert seit: Jun 2004
Beiträge: 80
Marskuh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich denke mal, dass sich letztendlich da nich sehr viel tun wird, denn andere funktionen werden es so ähnlich amchen müssen...
es is immer nen suchen & ersetzen prinzip.

d.h. man muss erst nen datensatz finden und ihn dann ersetzen.
die diversen anderen funktoinen die es noch gibt machen das leben vll. einfacher, aber ich kann mirnich vorstellen, dass sie sehr viel schneller sind

kann mich aber auch irren...
... kannstes ja ersmal so ausprobieren

hab da noch was interessantes gefunden

preg_replace()...
guckst du auf www.php.net --> preg_replace, dann findeste paar infos darüber.
das könnte doch schon das sein, was du suchst.

greetz
Marskuh
Mit Zitat antworten
  #5 (permalink)  
Alt 03-06-2004, 23:47
jperl
 Newbie
Links : Onlinestatus : jperl ist offline
Registriert seit: Jun 2004
Beiträge: 19
jperl ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Bastian_W
Dauert aber je nach einträgen ziemlich lange oder???

du kannst ja auch nur die suchwörter in ein array speichern und bereits bei der mysql_abfrage schauen ob das suchwort enthalten ist. dann haste weniger datensätze.

SELECT * FROM table WHERE suchwort like "%Wort%"

jperl
Mit Zitat antworten
  #6 (permalink)  
Alt 04-06-2004, 00:22
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@jperl

das würde aber vorraussetzen das ich das Suchwort im Text kennen würde... dafür müßte ich dann aber wiederrum eine möglichkeit finden alle Wörter in solchen Klammern [[ ]] im Text auszulesen und als String oder so zu speichern. Mir fällt da aber spontan keine Idee zu ein :-(
__________________
require_once('gehirn_v_02.php');
Mit Zitat antworten
  #7 (permalink)  
Alt 04-06-2004, 00:26
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

@Bastian_W

das mal nur als anregung


Code:
SELECT suchwort, ersetzwort FROM tabelle

while mysql_fetch_array()
{
  array_s[] = row->suchwort
  array_r[] = row->ersetzwort
}

echo str_replace(array_s, array_r, text)
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #8 (permalink)  
Alt 04-06-2004, 20:00
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Abraxax

danke!!! Vielen DANK

Mit deiner Anregung habe ich mal fogendes gebaut:

PHP-Code:
$result mysql_query("SELECT `wort`, `http` FROM `$db_table`");

while (
$row mysql_fetch_array($result))   
{
$returncontent str_replace("[[".$row[0]."]]",
"<a href=".$row[1].">".$row[0]."</A>"$returncontent);
}
echo 
$returncontent
UND das läuft ziemlich gut...

Nun aber noch ein paar Fragen:
Was bedeutet bei dir: $array_s[] = $row->suchwort???
Wird mein Beispiel oben die DB stark belasten und würde es eine bessere möglichkeit geben?


EDIT:
umbruch by Abraxax
__________________
require_once('gehirn_v_02.php');

Geändert von Abraxax (04-06-2004 um 21:33 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 04-06-2004, 20:36
Marskuh
 Junior Member
Links : Onlinestatus : Marskuh ist offline
Registriert seit: Jun 2004
Beiträge: 80
Marskuh ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$array_s[] = $row->suchwort; heisst, dass der nen array erstellt und jedesmal wenn er die while-schleife durchläuft hängt er ein neues arrayelement hinten an.
wenn du also 3 datenbankeinträge hast wird die whileschleife 3 x durchlaufen und er erzeugt dir nen array mit 3 feldern

z.b. so
$array_s[0] = "Browser";
$array_s[1] = "Maus";
$array_s[2] = "Analphabet";
Mit Zitat antworten
  #10 (permalink)  
Alt 04-06-2004, 21:27
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

genau. und erst NACH DER SCHLEIFE wird str_replace() NUR EINMAL eingesetzt.

du machst es jetzt mit jedem durchlauf. die array-lösung sollte schneller sein.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #11 (permalink)  
Alt 04-06-2004, 21:31
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

und weil du das ohne mucken selber probiert hast, was scheinbar in diesem forum nciht selbstverständlich zu sein scheint, bekommst du von mir auch die anpassung.

PHP-Code:
$result mysql_query('SELECT `wort`, `http` FROM `'.$db_table.'`') or die(mysql_error());

$array_s $array_r = array();
while (
$row mysql_fetch_array($result))
{
    
$array_s[] = '[['.$row[0].']]';
    
$array_r[] = '<a href="'.$row[1].'">'.$row[0].'</a>';
}

$returncontent str_replace($array_s$array_r$returncontent);

echo 
$returncontent

und schaue dir den code genau an. es ist nicht alles auf den ersten blick zu sehen. also genau schauen und daraus lernen. ;-)
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #12 (permalink)  
Alt 05-06-2004, 21:30
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm, wenn ich solche Fragen stelle ist es eigentlich auch selbstverständlich das ich mich um eine Lösung bemühe (require_once('gehirn_v_02.php'); ). Sonst kann ich bei www.scriptlance.com ja auch ein Script gegen Geld erstellen lassen.

Bezüglich der Änderung (Danke )
Sowas ähnliches habe ich mir auch schon gedacht und versucht. Aber mir war die Funktionsweise von:
array_s[] = row->suchwort
einfach nicht klar.

Ich bin nur noch die ganze Zeit am überlegen was das hier: $array_s = $array_r = array();
aussagt. Definierst du damit das $array_s + $array_r Arrays sind und kein String???
__________________
require_once('gehirn_v_02.php');
Mit Zitat antworten
  #13 (permalink)  
Alt 05-06-2004, 22:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Bastian_W
Ich bin nur noch die ganze Zeit am überlegen was das hier: $array_s = $array_r = array();
aussagt. Definierst du damit das $array_s + $array_r Arrays sind und kein String???
ja. ich könnte das auch so schreiben ....
PHP-Code:
$array_s = array();
$array_r = array(); 
... aber man ist ja faul.

damit sage ich nur, dass die beiden variablen vom typ array sind. ich find's sauber(er) so. ohne dem würde es aber auch funktionieren. ;-)
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #14 (permalink)  
Alt 06-06-2004, 17:14
Bastian_W
 Newbie
Links : Onlinestatus : Bastian_W ist offline
Registriert seit: Jun 2004
Ort: Deutschland
Beiträge: 8
Bastian_W ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Marskuh
ich seh grad dass deine tablle nur 2 spalten hat...
... ich empfehle dir Primärschlüssel zu verwenden, sonst wirds irgendwann schwer deine Datensätze eindeutig identifizieren zu können
Kannst du das mit dem Primärschlüssel mal genauer erklären? Ich weiß das ein Primärschlüssel dazu verwendet wird einen Eintrag eindeutig zu identifizieren (Normalerweise mache ich das mit "auto_increment"). Da ich in meinem Script ja nirgendwo so eine "EintragsID" verwende um etwas abzufragen denke ich mal das es überflüssig ist (Datenbankbalast?!?!). Oder liege ich da falsch????

Oder sollte ich mein Script dahingegen ändern? Wüßte nur so spontan nicht wie.

@Abraxax
Ah ok danke dann lag ich ja mal nicht falsch.
__________________
require_once('gehirn_v_02.php');
Mit Zitat antworten
  #15 (permalink)  
Alt 06-06-2004, 18:46
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

auto_inc != PK
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:04 Uhr.