2016-02-24 2 views
3

Я использую IFTTT с Wordpress, поэтому каждый раз, когда я создаю сообщение на instagram, рецепт создает сообщение в Wordpress.Удалить часть src после определенного символа

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

+0

Не могли бы вы добавить некоторые дополнительные подробности по этому вопросу. Что именно находится в post_content? Вам может потребоваться регулярное выражение, если вы хотите извлечь/заменить определенную часть кода. – puppyFlo

+0

Я добавил дополнительную информацию. – mattia

+0

См. Мой обновленный ответ - это делает это? – puppyFlo

ответ

0

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

Я добавил дополнительные сведения – mattia

+0

Режиме решает проблему? Возможно, потребуется некоторое повышение в зависимости от конкретного содержимого переменной post_content. – puppyFlo

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

благодаря

Смежные вопросы