Удалить часть src после определенного символа

Я использую IFTTT с WordPress, поэтому каждый раз, когда я создаю пост в Instagram, рецепт создает пост в WordPress.

Код, который создает 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>

По какой-то причине плагин, который я использую, чтобы добавить это изображение как показанное изображение, не любит этот конец изображения, поэтому мне нужно удалить код после «.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?

Это ссылка для $data['post_content']:

https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

3

Решение

Если вы хотите заменить контент в этом конкретном 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>

Удачи

0

Другие решения

Вот сценарий, который я написал, который делает это.

$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;' />

Помните, что этот код предназначен только для этой задачи, он будет работать только здесь, будьте осторожны, для чего вы его используете, поскольку он может привести к неожиданным результатам, если, например, у вас есть другие знаки вопроса в содержании.

Однако было бы намного проще отредактировать ссылку, прежде чем она станет HTML, если это плагин, который извлекает ссылку, это не должно быть очень сложным.

0

Спасибо вам всем, я решил с этим кодом:

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»?

это условие, кажется, не работает:

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;
}
}

Спасибо

0
По вопросам рекламы [email protected]