【发布时间】:2016-02-07 07:00:40
【问题描述】:
我正在更新我的编码并从 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 的文本片段,其中匹配 (.*?),但我无法在 switch 中处理这些。
有关如何解决此问题或更好的编码方法的任何建议。 上面的例子只是要匹配的几个选项,实际列表要大得多。
【问题讨论】:
标签: php regex preg-replace-callback