将数组(具有相同的值)替换为_content中的另一个数组

时间:2019-07-01 作者:Erick Arends

我正在制作一个插件,需要在其中编辑帖子内容中的H2标签。

我已经做了两天了,但我的php知识太有限,无法解决这个问题。。

我想要的是回报所有<h2> 标记为<h2 id="$headings_array_stripped">

我似乎不知道该怎么做。我试过与foreach 循环和preg_replace, str_replace 和排序。

问题似乎在于$headings_open_tag_array 都一样(<h2>) , 所以str_replace, 例如,不会循环遍历它们,但只更改所有<h2>\'s到的第一个对应值$headings_array_stripped:

str_replace( $headings_open_tag_array, $headingsarray_stripped, $article )

代码:

function replace_content_jump_menu() {

// Get metadata attached to the plugin
$jump_menu_check = get_post_meta( get_the_ID(), \'jump-menu\', true );

// Get the content
$article = get_the_content();

// Retrieve all <h2>header</h2> tags (with content) and put them in an array
preg_match_all( \'|<h2>(.*)</h2>|iU\', $article, $headings_array ); 

// Strip h2 tags and make lowercase
$headings_array_stripped = preg_replace( \'/\\W+|[0-9]+|\\<h2\\>|\\<\\/h2\\>/\', \'\', array_map( \'strtolower\', $headings_array[0] ) ); 

// Retrieve all <h2> tags from the_content and put them in an array
preg_match_all( \'|<h2>|iU\', $article, $headings_open_tag_array ); 

// preg_replace? str_replace? foreach()?

};
add_filter( \'the_content\', \'replace_content_jump_menu\' );

1 个回复
SO网友:Erick Arends

我发现this article by Jeroen Sormani 解决了我的问题

相关推荐

查询unctions.php中的帖子并更新字段

我在中查询帖子时遇到问题functions.php. 这主要是在后端更新帖子,而不是在前端显示查询。我正在尝试获取所有使用状态帖子格式的帖子,如果变量为true,则更新一个元字段。我的代码:function status_alerts($query) { //start function global $post; // set the global $args = array( // all posts in the status post format \'posts_