EisFuX: preg_replace() und PCRE

Beitrag lesen

(Hallo|Hi(ho)|Nabend) kointa,

ich wollte grad ein Skript bissle modifizieren, jedoch scheint das skript nur für str_replace ausgelegt zu sein.

Ich kann jedenfalls das ###URL### nicht durch eine URL ersetzen.

Weil dein Script nicht nach "###URL###" sucht.

// Own Player

define("OWN_WIDTH", 380);
define("OWN_HEIGHT", 313);

Der folgende Reguläre Ausdruck  sucht nach '[own ...]', wobei du dir für ... alle möglichen druckbaren Zeichen (und davon mindestens eins) vorstellen musst:

define("OWN_REGEXP", "/[own ([[:print:]]+)]/");

Steht diese Kombination irgendwo in deinem zu durchsuchendem Text?

define("OWN_TARGET", "<embed type="application/x-shockwave-flash" height="".OWN_HEIGHT."" width="".OWN_WIDTH."" src="http://www.choiz.extra.hu/mediaplayer.swf?file=###URL###&backcolor=0x000000&frontcolor=0xCCCCCC&lightcolor=0x000000&screencolor=0x000000&searchbar=false&autostart=false" loop="true" quality="high" bgcolor="#000000" name="flvplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed>");

Bääh, was für ein Umstand, extra für preg_replace_callback() eine Ersetzen-Funktion zu basteln. Im englischen Wort "replace" steckt doch das "Ersetzen" schon drin ...

function own_plugin_callback($match) {
$output = OWN_TARGET;
$output = str_replace("###URL###", $match[1], $output);
return ($output);
}

function own_plugin($content) {
return preg_replace_callback(OWN_REGEXP, 'own_plugin_callback', $content);
}


>   
> Ich habe schon versucht anstatt  
>   
> `str_replace("###URL###", $match[1], $output);`{:.language-php}  
>   
> das hier zu nehmen:  
>   
> `preg_replace("###URL###", $match[1], $output);`{:.language-php}  
>   
> Aber es geht trotzdem nicht.  

Ja, klar, weil preg\_replace() damit nach '##URL##' sucht, und dieses Muster wird in deinem zu durchsuchenden Text nicht enthalten sein. Das erste und das letzte '#' wird dabei übrigens als RegExp-Begrenzerzeichen interpretiert.  

>   
> Ich habe schon gegoogelt aber irgedwie nichts gefunden, scheint wohl etwas komplizierter zu sein. wo könnte der fehler sein ?  
> ich muss dazu sagen dass ich in php neu bin, aber ich lerne schnell ;)  

Das ist gut. Dann lerne schnell [preg_replace()](http://de.php.net/manual/de/function.preg-replace.php) und [PCRE in PHP](http://de.php.net/manual/en/reference.pcre.pattern.syntax.php) anzuwenden. ;-)  
  

> ich möchte als ergebnis zb. haben:  
> [own http://fsdf.de]  
  
Das Ergebnis ist weniger interessant. Um einen passenden RegEx zu erstellen, ist es wichtiger zu wissen, wonach preg\_replace() suchen soll.  
  
MffG  
EisFuX

-- 
[Nichts ist dem Zuwachs an Wissen förderlicher, als nach einer Antwort korrigiert zu werden.](http://community.de.selfhtml.org/zitatesammlung/zitat119)