![]() |
[PHP] Text nach Strings durchsuchen und sortieren
Hallo,
Mir fällt bis jetzt einfach keine gute Lösung für mein relativ simples Problem ein: Ich habe einen HTML-Text in dem sich keywords befinden, die ersetzt werden sollen. Den Text durch den sie ersetzt werden sollen, liefer eine Funktion ersetze($type, $nr){}. Jenachdem welcher Typ mein Keywort ist, wird er durch einen anderen Text ersetzt. Zusätzlich enthält dieser Text die $nr, diese gibt an, das wievielte Keywort es im Text ist. Zur Verdeutlichung ein Beispiel:
Code:
Hoffe es ist klar geworden... weiß jemand einen Lösungsansatz?
<html>
. . ( Dieses Keywort soll nachher "ersetze()" aufrufen mit $type=editor, $nr=1) . . ( " " ersetze("no_editor",2) ) . . ( " " ersetze("editor",3) ) </html> |
Re: [PHP] Text nach Strings durchsuchen und sortieren
nein richtig klar ist es mir nicht geworden aber wenn es um einfaches erstezen geht sollte diese funktion helfen
Delphi-Quellcode:
wobei bei mir search und replace zwei arrays sind in denen der zu ersetzende text steht ein beispiel aus meinem smilie code waere:
$ergebnisstext = str_replace($search, $replace, $zuersetzendertext);
Delphi-Quellcode:
$search = array(':D',
':P', ':)', ';)')
Delphi-Quellcode:
tja statt smilie text wird jetzt das smilie bild angezeigt :D
$replace = array('[img]smilies/biggrin.gif[/img]',
'[img]smilies/razz.gif[/img]', '[img]smilies/smile.gif[/img]', '[img]smilies/wink.gif[/img]') |
Re: [PHP] Text nach Strings durchsuchen und sortieren
OK, dann werde ich versuchen es noch klarer zu beschreiben:
Das Problem an der Sache ist, der funktion ersetze() die richtige $nr mitzugeben, also die nr des Keywords. Habe gerade eine Idee.. probier das mal schnell aus, wenns klappt post ich es noch. |
Re: [PHP] Text nach Strings durchsuchen und sortieren
Hallo Wuaegner :hi:
ich hab dich, glaub ich, nicht 100%ig verstanden(insbesondere das mit den Nummern), aber das sollte sich mit RegExps machen lassen. Ungefähr so(ungetestet, unvollständig, nur Ansatz):
Code:
Zur $nr ggf. das ganze in ne Schleife packen und mitzählen...
preg_match('//Ui', $html_str, $matches);
$item = $matches[1]; preg_replace('//Ui', ersetze($item))); mfg Christian |
Re: [PHP] Text nach Strings durchsuchen und sortieren
Hier bietet sich die Callback-Variante eher an:
Code:
Wenn allerdings die Felder statisch und bekannt sind würde ich es persönlich vom Konzept aber anders angehn.
[b]function[/b] replace_textfeld ([color=#df0000]$match[/color]) {
[b]global[/b] [color=#df0000]$tf_zaehler[/color]; [color=#df0000]$tf_zaehler[/color] ++; [b]return[/b] ersetze($match[1], [color=#df0000]$tf_zaehler[/color]); } [color=#df0000]$html[/color] = [color=#009900]/* irgendwo den HTML-Content herholen */[/color]; [color=#df0000]$tf_zaehler[/color] = 0; [b]preg_replace_callback[/b]([color=#1f00ff]"//Ui"[/color], [color=#1f00ff]"replace_textfeld"[/color], [color=#df0000]$html[/color]); |
Re: [PHP] Text nach Strings durchsuchen und sortieren
Zitat:
Code:
wobei ich nun die keywords so aufbauen wollte:
<? echo '<textarea class="'.$type.'" name="textfeld'.$nr.'" rows="'.$rows.'" cols="'.$cols.'">
das steht nachher in der html-seite, und wird von mir dann ausgelesen ( $type wäre hier dann "noeditor", textarea $rows wären 15 und $cols ebenfalls 15). Die $nr würde ich dann bei der Durchsuchung des Textes vergeben. Jemand einen besseren Vorschlag? |
Re: [PHP] Text nach Strings durchsuchen und sortieren
Kommt zunächst einmal drauf an in welchem Kontext die Aufgabe zu sehn ist. Wenn du z.B. genau vorher weisst wieviele Felder auf der Seite sind und was deren Inhalt wird kämst du mit einem Template-Parser und einem action-Handler für das Formular günstiger. Wenn du vorher nicht weisst, wieviele Felder es werden, woher weisst du dann, welche Dimension die haben werden? :gruebel:
Zu deinem bisherigen Vorgehn (incl. deiner Modifikation) Die Syntax find ich lesbarer: e: editor oder noeditor c: für cols r: für rows Die entsprechende Reg-Expression für mein Callback wäre:
Code:
Die entsprechenden Werte in der Callback-Funktion:
"//Ui"
e -> $match[1] c -> $match[2] r -> $match[3] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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