1
我正在更新我的编码并将其从preg_replace
转移到函数preg_replace_callback
。在第一次我使用了两个数组,它们用一段文字代替了所有的匹配。Preg_replace和Preg_replace_callback
我已经安装了以下新的一段代码,但我遇到了一些问题:
<?php
$inhoud = " dit is een test versie, waarin [alum] staat [alum] & [fotoalbums] om [intern=test]te[/intern] vervangen<p>";
function parse_callback($match) {
$hit = $match[0];
switch ($hit){
case '[alum]':
return "<a href=\"/linktype1/\">link1</a>";
break;
case '[fotoalbums]':
return "<a href=\"/linktype2/\">link2</a>";
break;
case '[intern]':
return "<a href=\"". $match[1] ."\">$match[2]</a>";
break;
default:
//return "UNKNOWN:$match";
return var_dump($match);
}
}
$Patroon = "'\[intern=(.*?)\](.*?)\\[\/intern\]'";
$Patroon = "'\[fotoalbums\]'";
$Patroon = "'\[alum\]'";
$inhoud = preg_replace_callback($Patroon, parse_callback, $inhoud);
?>
后两种在$Patroon
没有问题,这些将被更新,但我不能更新第一个,因为找到的匹配将是完整的字符串。 $match
也将包含$inhoud
的文本,它们与(.*?)
匹配,但我无法在交换机中处理这些文本。
关于如何解决此问题或更好的编码方法的任何建议。 上面的例子只是将匹配的几个选项,实际列表要大得多。
谢谢,它完美的作品。 – Ralf
我很高兴。另外请记住,您可以轻松地将最后2个模式合并为1. – Mariano
您的意思是,您可以将最后两个模式合并为1吗?不知道我是否完全理解你的意思。 – Ralf