删除src中某个字符后的部分内容
Delete part of src after a certain character
我在 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").
我找到了一个在保存前修改 post 的 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>
祝你好运
这是我编写的脚本。
$string = "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/>";
$string2 = "asd";
$count = 0;
for($i=0;$i<strlen($string);$i++)
{
if($string[$i]=='?')
{
while($string[$i]!='\'')
$i++;
}
$string2[$count] = $string[$i];
$count++;
}
echo $string2;
它基本上会将一个字符串的内容复制到另一个字符串中,但会跳过 ?
之后的任何内容,直到找到 '
就看你自己实现了,应该很简单。我发布的代码输出
img src='https://scontent.cdninstagram.com/t51.2885-15/sh0.08/e35/12724750_1719815604930604_2078818546_n.jpg' style='max-width:600px;' />
请记住,此代码仅为此任务而设计,它仅适用于此处,请小心使用它,因为它可能会产生意想不到的结果,例如,如果内容中有其他问号。
然而,在 link 变成 HTML 之前编辑它会容易得多,如果它是一个正在获取 link 的插件,应该不会很难。
谢谢大家,我用这个代码解决了:
add_filter( 'wp_insert_post_data' , __NAMESPACE__ . '\filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
$data['post_content'] = preg_replace('/(\?.*)(?=\' style)/','', $data['post_content']);
return $data;
}
但现在我有另一个问题,如果类别是 "Instagram",我怎么能说应用此过滤器 ONLY?
这个条件似乎不成立:
add_filter( 'wp_insert_post_data' , __NAMESPACE__ . '\filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
if ( in_category('instagram') ) {
$data['post_content'] = preg_replace('/(\?.*)(?=\' style)/','', $data['post_content']);
return $data;
}
}
谢谢
我在 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").
我找到了一个在保存前修改 post 的 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>
祝你好运
这是我编写的脚本。
$string = "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/>";
$string2 = "asd";
$count = 0;
for($i=0;$i<strlen($string);$i++)
{
if($string[$i]=='?')
{
while($string[$i]!='\'')
$i++;
}
$string2[$count] = $string[$i];
$count++;
}
echo $string2;
它基本上会将一个字符串的内容复制到另一个字符串中,但会跳过 ?
之后的任何内容,直到找到 '
就看你自己实现了,应该很简单。我发布的代码输出
img src='https://scontent.cdninstagram.com/t51.2885-15/sh0.08/e35/12724750_1719815604930604_2078818546_n.jpg' style='max-width:600px;' />
请记住,此代码仅为此任务而设计,它仅适用于此处,请小心使用它,因为它可能会产生意想不到的结果,例如,如果内容中有其他问号。
然而,在 link 变成 HTML 之前编辑它会容易得多,如果它是一个正在获取 link 的插件,应该不会很难。
谢谢大家,我用这个代码解决了:
add_filter( 'wp_insert_post_data' , __NAMESPACE__ . '\filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
$data['post_content'] = preg_replace('/(\?.*)(?=\' style)/','', $data['post_content']);
return $data;
}
但现在我有另一个问题,如果类别是 "Instagram",我怎么能说应用此过滤器 ONLY?
这个条件似乎不成立:
add_filter( 'wp_insert_post_data' , __NAMESPACE__ . '\filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
if ( in_category('instagram') ) {
$data['post_content'] = preg_replace('/(\?.*)(?=\' style)/','', $data['post_content']);
return $data;
}
}
谢谢