Bananenflanke
Grünschnabel
Hallo liebe User!
Bei unserer Website steht die Umstellung auf PHP 7 an - wird ja auch endlich Zeit. ;-)
Allerdings stoße ich dabei auf das Problem, dass ich die Funktion "preg_replace" (aufgrund /e) nicht erfolgreich ersetzen kann und hoffe, ihr könnt mir an dieser Stelle weiterhelfen.
Ich habe es bereits erfolglos mit verschiedenen Varianten zu preg_replace_callback und preg_replace_callback_array versucht.
Ich hoffe, ihr könnt mir weiterhelfen. Vielen Dank im Voraus!
Viele Grüße
Bananenflanke
Bei unserer Website steht die Umstellung auf PHP 7 an - wird ja auch endlich Zeit. ;-)
Allerdings stoße ich dabei auf das Problem, dass ich die Funktion "preg_replace" (aufgrund /e) nicht erfolgreich ersetzen kann und hoffe, ihr könnt mir an dieser Stelle weiterhelfen.
Ich habe es bereits erfolglos mit verschiedenen Varianten zu preg_replace_callback und preg_replace_callback_array versucht.
PHP:
$patterns_anywhere = Array(
'/\<!-- (.*?) -->/'=>'', // comment
'/\<br \/>/'=>'<br />', // explicit line break
'/\[\[Image:(.+?)\|([0-9]*)\|([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})\]\]/e'=>"showimage('\\1', '\\3', '\\2')", // specific image revision
'/\[\[Image:(.+?)\|([0-9]+)\]\]/e'=>"showimage('\\1', '', '\\2')", // image with specific width
'/\[\[Image:(.+?)\]\]/e'=>"showimage('\\1')", // image
'/\[\[(:[^\|\]]*?)\|([^\]]+?)\]\]/e'=>"'<a href=\"' . wikilink('\\1') . '\">\\2</a>'", // link to category
'/\[\[(:[^\|\]]*?)\]\]/e'=>"'<a href=\"' . wikilink('\\1') . '\">\\1</a>'", // link to category
'/\[\[([^\|\]]+?)\|([^\]]+?)\]\]/e'=>"'<a title=\"%linkstart%\\1%linkend%\" href=\"' . wikilink('\\1') . '\"%class%>\\2</a>'", // link to page
'/\[\[([^\|\]]+?)\]\]/e'=>"'<a href=\"' . wikilink('\\1') . '\"%class%>%linkstart%\\1%linkend%</a>'", // link to page
'/\[([^\] ]+) ([^\]]+?)\]/'=>'<a href="\\1">\\2</a>', // external link
'/\[([^\] ]+?)\]/'=>'<a href="\\1">\\1</a>', // external link
"/'''''(.+?)'''''/"=>'<strong><i>\\1</i></strong>', // bold
"/'''(.+?)'''/"=>'<strong>\\1</strong>', // bold
"/''(.+?)''/"=>'<i>\\1</i>', // italic
'/<u>(.+?)<\/u>/'=>'<u>\\1</u>', // underline
'/<s>(.+?)<\/s>/'=>'<del>\\1</del>', // strike
'/<sub>(.+?)<\/sub>/'=>'<sub>\\1</sub>', // subscript
'/<sup>(.+?)<\/sup>/'=>'<sup>\\1</sup>' // superscript
);
// patterns which will be matched against whole lines
$patterns_lines = Array(
'/^[\-]{4,}[\s]*$/'=>'<hr class="userline" />', // horizontal line
'/^====== (.+?) ======[\s]*$/'=>'<h6>\\1</h6>', // heading level 6
'/^===== (.+?) =====[\s]*$/'=>'<h5>\\1</h5>', // heading level 5
'/^==== (.+?) ====[\s]*$/'=>'<h4>\\1</h4>', // heading level 4
'/^=== (.+?) ===[\s]*$/e'=>"'<a id=\"' . make_anchor('\\1') . '\" name=\"' . make_anchor('\\1') . '\"></a><h3>\\1</h3>'", // heading level 3
'/^== (.+?) ==[\s]*$/e'=>"'<a id=\"' . make_anchor('\\1') . '\" name=\"' . make_anchor('\\1') . '\"></a><h2>\\1</h2>'", // heading level 2
'/^= (.+?) =[\s]*$/'=>'<h1>\\1</h1>', // heading level 1
);
//Code übersprungen
// regular formatting codes (defined in $patterns_anywhere)
foreach ($patterns_anywhere as $search=>$replace) {
$string = preg_replace($search, $replace, $string, -1, $replace_count);z
//Code übersprungen
}
//Code übersprungen
// regular formatting codes (defined in $patterns_lines)
$lines = explode("\n", $string);
foreach ($lines as $key=>$line) {
foreach ($patterns_lines as $search=>$replace) {
$line = preg_replace($search, $replace, $line);
}
$lines[$key] = $line;
}
Ich hoffe, ihr könnt mir weiterhelfen. Vielen Dank im Voraus!
Viele Grüße
Bananenflanke