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. |
 |

28-03-2005, 00:37
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
[REGEX] Funktionsaufruf in preg_replace - 2. Paramter
Ich verwende aktuell folgenden Code, um den Inhalt eines Tags (quote)zu parsen.
Das Problem ist leider nur, dass der Funktion quote() nicht der gewünschte Inhalt sondern lediglich der Wert \1\1 übergeben wird.
Code:
$text = preg_replace("/\[quote\](.*?)\[\/quote\]/si", quote('\\1'),$text);
Habe bisher folgendes versucht:
1.) Modifier e --> erfolglos
2.) Verwendung Funktion preg_replace_callback --> erfolglos
3.) zusätzliches Setzen von " --> erfolglos
Weiss evtl. jemand Rat?
PS: Innerhalb der PHP-Tags wird [quote] leider geparst, daher Verwendung Code-Tags
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
Geändert von Crake (28-03-2005 um 01:47 Uhr)
|

28-03-2005, 00:50
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
ohne es zu prüfen oder zu verstehen was du willst, versuchs damit
PHP-Code:
$text = preg_replace("/\[ quote\](.*?)\[\/quote\]/si", quote($1),$text);
EDIT: das leerzeichen musste aber entfernen
|

28-03-2005, 01:06
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
Zitat:
unexpected T_LNUMBER, expecting T_VARIABLE or '$'
|
Klang zwar schön, bewirkt aber nicht das gewünscht Ergebnis.
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
|

28-03-2005, 01:14
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
$text = preg_replace("/[ quote](.*?)[/quote]/si", quote(."$1".),$text); ^^ try
|

28-03-2005, 01:33
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
Zitat:
parse error, unexpected '.', expecting ')'
|
Sorry, aber das war vorherzusehen
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
|

28-03-2005, 01:38
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
argh ^^ lass die punkte weg
|

28-03-2005, 01:47
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
Zitat:
Original geschrieben von Benny-one
argh ^^ lass die punkte weg
|
Soweit war ich auch schon.
Übergebener Wert: $1
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
|

28-03-2005, 01:53
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
was hast du eigentlich vor wenn man fragen darf ^^
|

28-03-2005, 02:04
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
Eigentlich etwas ganz simples, dachte ich zumindest.
Also ich lade wie gewohnt einen beliebigen Text aus der Datenbank, der eine BBCodes enthält. Soweit ja auch kein Problem.
Mittels der Funktion quote wollte ich dann den Inhalt der Quote-Tags in ein Template laden und wie gewohnt zurückgeben:
PHP-Code:
function quote($code)
{
global $template;
$code = str_replace("\\\\\"","\\"",$code);
eval("$code = "".$template->tpl("quote")."\";");
return $code;
}
Leider wird aber der Funktion aus bekannten Gründen kein Wert übergeben.
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
Geändert von Crake (28-03-2005 um 02:06 Uhr)
|

28-03-2005, 10:11
|
idarrerules
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 2
|
|
moin,
versuchs mal damit...
if (preg_match('/\[quote\](.*)(\[/quote\]){1}/siU', $text, $data) {
$code = $data[1];
}else{
echo "kein preg_match";
}
Geändert von idarrerules (28-03-2005 um 10:16 Uhr)
|

28-03-2005, 10:20
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
Re: [REGEX] Funktionsaufruf in preg_replace - 2. Paramter
Zitat:
Habe bisher folgendes versucht:
1.) Modifier e --> erfolglos
2.) Verwendung Funktion preg_replace_callback --> erfolglos
|
ich wüßte nicht, warum das nicht funktionieren sollte.
ansonsten mußt du eben debuggen, und schauen, warum preg_replace_callback nicht funktioniert.
Code:
$text = preg_replace("/\[quote\](.*?)\[\/quote\]/sie", "quote('\\1')",$text);
wenn du den modifier e verwendest, brauchst du diese syntax ... erst werden alle backref ersetzt, dann wird der string per eval ausgeführt, das ergebnis wird als ersatz verwendet.
__________________
Die Zeit hat ihre Kinder längst gefressen
|

28-03-2005, 11:34
|
Crake
Registrierter Benutzer
|
|
Registriert seit: Jun 2003
Beiträge: 150
|
|
Re: Re: [REGEX] Funktionsaufruf in preg_replace - 2. Paramter
Zitat:
Original geschrieben von derHund
Code:
$text = preg_replace("/\[quote\](.*?)\[\/quote\]/sie", "quote('\\1')",$text);
|
Du wirst lachen, aber dies habe ich schon getestet und nicht die gewünschte Ausgabe erhalten. Aber nicht weil der Funktionswert nicht übergeben wird, sondern weil sich innerhalb der Funktion quote() auch noch ein kleiner Fehler befindet.
Notiere ich in dieser , dann sehe ich, dass alles wie gewünscht funktioniert. Also bitte nicht schlagen
Danke
Stephan
__________________
Gesellschaftsforum.net - Projekt zur Wiederbelebung der Diskussionskultur im Internet
1st News - Das Newsletterscript für den professionellen Einsatz
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|