preg_replace macht nicht was ich will
andi_b
- php
0 Max Mustermann0 Iwemti
0 lulu0 andi_b
'n aamd zusammen.
ich habe mir hier eine klasse geschrieben, die gekennzeichnete links in einem text (aus db) später in echte links wandeln soll. dafür habe ich ein preg_replace mit /e genommen. die richtigen stellen werden auch gefunden, aber:
Parse error: parse error, unexpected '[' in e:\eigene\_web\hu\_include\model\Pregger.class.php(14) : regexp code on line 1
Fatal error: Failed evaluating code: Link_1-[4 in e:\eigene\_web\hu\_include\model\Pregger.class.php on line 14
hier mal der relevante teil der klasse:
function findArticleReferences($inputArticle){
$returnArray = array();
$search = "/([<)([1-9>[0-9]{0,5})(]])/e";
$returnArray = preg_replace($search, $this->privateLinkSetter('\2'), $inputArticle);
return $returnArray;
}
function privateLinkSetter($link){
++$this->counter;
return "Link_" . $this->counter . "-[" . $link;
}
}
warum wird die rückgabe (der ersetzte teil) nochmal von dem pregger bearbeitet?
wie soll ich das denn machen?
bin echt ratlos...
danke, andi
Hi!
Wie sagt man da so schön? Eine Runde Mitleid! Oooooooooooooooohhhhh!!
Helfen kann ich da so direkt auch nicht.
Kann da vielleicht aber mal noch ein paar LInks raussuchen.
Bye, Max
Hallo,
Wie sagt man da so schön? Eine Runde Mitleid! Oooooooooooooooohhhhh!!
Helfen kann ich da so direkt auch nicht.
Geh bitte sterben! Leise!
Grüsse
Iwemti
Huhu andi_b
(Zur Info, das Code-Beispiel auf das ich mich beziehe ist leider in einem anderen Thred (die übliche Doppelpostingproblematik))
[pref:t=71533&m=411827]
function findArticleReferences($inputArticle){
$returnArray = array();
wieso ist das ein Array ...
$search = "/([<)([1-9>[0-9]{0,5})(]])/";
$returnArray = preg_replace($search,$this->privateLinkSetter('\2'), $inputArticle);
... wenn hier ein String zugewiesen wird?
return $returnArray;
}function privateLinkSetter($link){
++$this->counter;
return "Link_[" . $link . "]:" . $this->counter;
}geht alles wunderbar, ABER die funktion 'privateLinkSetter' wird nur einmal _vor_ der ausführung des preg_replace aufgerufen.
so ist es ja auch richtig.
resultierendes problem: der counter ist überall gleich.
gibt es hierzu einen trick, [...]?
In Deinem ersten Posting warst Du eigentlich auf dem "richtigeren"
Weg mit dem /e -Modifier.
probier mal folgendes
function findArticleReferences($inputArticle)
{
$s = '';
$search = "/([<)([1-9>[0-9]{0,5})(]])/e";
$s = preg_replace($search, "$this->privateLinkSetter('\2')", $inputArticle);
return $s;
}
Viele Grüße
lulu
(Zur Info, das Code-Beispiel auf das ich mich beziehe ist leider in einem anderen Thred (die übliche Doppelpostingproblematik))
[pref:t=71533&m=411827]
probier mal folgendes
function findArticleReferences($inputArticle)
{
$s = '';
$search = "/([<)([1-9>[0-9]{0,5})(]])/e";
$s = preg_replace($search, "$this->privateLinkSetter('\2')", $inputArticle);
return $s;
}
alter falter - du bist gut mann ;) es funktioniert so und leider weiss ich zwar noch nicht ganz wieso, aber das okmmt noch...
vielen vielen dank!
andi