我在wordpress上使用ifttt,所以每次我在instagram上创建一个post,配方都会在wordpress上创建一个post。
ifttt创建的代码:

<div>
   <img src='https://scontent.cdninstagram.com/t51.2885-15/sh0.08/e35/12724750_1719815604930604_2078818546_n.jpg?ig_cache_key=MTE5MTQxNTkwMjE5ODM2NzYwOQ%3D%3D.2' style='max-width:600px;' /><br/>
   <div>
      <a href="http://ift.tt/1XKFC24Q7" target="_blank">See</a>
   </div>
</div>

出于某种原因,我正在使用一个插件来添加这个图像,比如特色图像,不喜欢图像src的这一端,所以我需要删除“.jpg”之后的代码:
“?ig_cache_key=mte5mtqxntkwmje5odm2nzywoq%3d%3d.2“)。
我找到了一个wordpress过滤器,可以在保存前修改文章。
所以我尝试了这个代码,但是这个删除了?之后的所有其他代码。
add_filter( 'wp_insert_post_data' ,  __NAMESPACE__ . '\\filter_post_data' , '99', 2 );

function filter_post_data( $data , $postarr ) {

  $data['post_content'] = substr( $data['post_content'], 0, strpos( $data['post_content'], "?")); delete all after ?

  return $data;
}

怎么能说删掉问号之后的所有东西?但只在img标签的src内?
这是$data['post_content']的参考:
https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

最佳答案

如果要替换特定HTML中的内容,请尝试以下操作:

$a="<div><img src='https://scontent.cdninstagram.com/t51.2885-15/sh0.08/e35/12724750_1719815604930604_2078818546_n.jpg?ig_cache_key=MTE5MTQxNTkwMjE5ODM2NzYwOQ%3D%3D.2' style='max-width:600px;' /><br/><div><a href='http://ift.tt/1XKFC24Q7'target='_blank'>See</a></div></div>";
echo preg_replace('/(\?.*)(?=\')/U','',$a);

<div><img src='https://scontent.cdninstagram.com/t51.2885-15/sh0.08/e35/12724750_1719815604930604_2078818546_n.jpg' style='max-width:600px;' /><br/><div><a href='http://ift.tt/1XKFC24Q7'target='_blank'>See</a></div></div>

祝你好运

关于php - 删除某些字符后的src部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35606284/

10-10 13:01