这是我的代码......基本上它在变量中找到任何页面-NUMBER-然后用数组中的页面url替换它
$content_text = preg_replace("/page-(\d+)-/sie", '$pageurl[$1]', $content_text);
直到它找到的NUMBER不在数组中并且它返回错误...
我可以采用另一种有效方式吗?
我喜欢上面的代码因为它很简单,但我可能不得不使用更复杂的代码......
答案 0 :(得分:1)
语法可能不是100%正确但是;
$content_text = preg_replace_callback('/page-(\d+)-/sie',
create_function('$number',
'global $pageurl;
if (in_array($number, $pageurl)){
return $pageurl[$number];
}else{
/*do something*/
};'),
$content_text);
编辑忘记包含“global $ pageurl;”能够访问函数内部的变量。
答案 1 :(得分:0)
在替换中添加一个检查以查看该项目中是否存在该项目。如果将代码放入函数并使用preg_replace_callback而不是e标志,则可能更容易阅读。
答案 2 :(得分:0)
为什么不通过preg_match_all获取数字,根据您获得的数字创建替换数组,然后使用这些数组运行str_replace。这样你可以确保1-1更换。
答案 3 :(得分:0)
foreach ($pageurl AS $num => $url) {
$search[] = "/page-({$num})-/sie";
$replace[] = $url;
}
$content_text = preg_replace($search, $replace, $content_text);