【问题标题】:php search and add content afterphp搜索并添加内容后
【发布时间】:2011-09-05 01:33:16
【问题描述】:

在我的内容中,我有一个“简码”来显示具有不同参数的视频,具体取决于我希望视频的外观。例如:高度、宽度、视频等。

我可以在php中写什么来搜索[video {paramaters}]并在其后添加内容?

请记住,{parameters} 总是不同的。

【问题讨论】:

  • 真的没有比这更多的代码了......假设我设置了 $after_content = 'text after content';现在我需要找到此代码[video webkit="video.m4v" width="500" height="210"] 将其添加到变量中并在视频后添加 $after_content。我只是不知道如何在内容中搜索代码
  • 我猜这是您要修改的 WordPress 插件,我猜对了吗?
  • @stealthyninja:你说得对,它是用 wordpress,但它不是插件。我制作了简码,但视频下需要有版权,但仅限于某些页面。所以我认为最简单的方法是不要使用the_content,而是稍微搜索一下视频代码,然后在它之后添加我的文字,然后使用apply_filter('the_content', get_the_content)

标签: php regex wordpress search


【解决方案1】:

好吧,当我需要做这样的事情时,我会使用 preg_replace 或 preg_replace_callback..

function videofunction($input){

//do something here and then:
return $whatever;

}

$content =  preg_replace('%\[video(.*?)\]%e', 'videofunction("\\1")', $content);

然后你必须想出逻辑 =)

编辑: 只是阅读你的帖子更多... 您想保留标签原样,并在其后添加一些内容.. 你可以用 preg replace 来做到这一点。像这样:

function videofunction($input){

$input .= "whatever else";
return $input;
}

preg_replace('%\[video.*?\]%e', 'videofunction("\\0")', $content);

虽然可能不是最好的方法,也许某种偏移捕获会更好?

【讨论】:

  • 非常好,成功了!谢谢。你能向我解释发生了什么事吗?我从未见过function_name('\\0')。 '\\0' 到底在做什么?
  • 基本上它是对捕获内容的反向引用。在第一个示例中,我给它一个 \\1 因为我想捕获括号内的内容。如果您有一个正则表达式,例如:(cap1)(cap2)(cap3)。你可以使用像 cap1(\\0) cap2(\\1) 这样的反向引用等等。还可以查看 preg_replace_callback。它有点干净
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多