从preg_match_all / foreach中排除已注释掉的链接

时间:2018-11-03 19:57:00

标签: php wordpress

我在wordpress中有一个功能可以查找链接并进行更改。

//FINDS ALL IMAGE LINKS
preg_match_all('/\S*\bwww\.tradingview\.com\S*/', $data['post_content'], $matches); 


//FOR EACH IMAGE LINK IN THE CONTENT...
foreach( $matches[0] as $imgURL ):

我正在尝试使其忽略所有这样注释掉的链接:

<!-- https://www.tradingview.com -->

我不确定该如何完成。对于Web开发人员,我很陌生,如果我遗漏了任何内容,我们深表歉意。

编辑:我打错了字并添加了!在评论的第一部分

编辑:这是我的其余代码,包括打印语句。

function customPostSave($data , $postarr) {

//      INCLUDES REQUIRED WP FILES
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

//FINDS ALL IMAGE LINKS
preg_match_all('/\S*\bwww\.tradingview\.com\S*/', $data['post_content'], $matches);
echo '<pre>', print_r($matches[0]), '</pre>';

//FOR EACH IMAGE LINK IN THE CONTENT...
foreach( $matches[0] as $imgURL ):

//      REMOVES ALL SPACES AROUND THE URL
$imgURL = trim($imgURL);

// STORE ORIGINAL URL
$imgURLoriginal = $imgURL;

//      PREPARES FILE INFORMATIONS
$file_array = array();
$file_array['name'] = basename($imgURL);
if( !preg_match('/(\.png)$/i', $imgURL) ) $file_array['name'] .= '.png';
$file_array['tmp_name'] = download_url($imgURL);

//      DOWNLOADS THE IMAGE AND UPLOADS IT LOCALLY
$id = media_handle_sideload($file_array, $postarr['post_ID']);
$localURL = wp_get_attachment_url($id);

//      GRABS THE POST TAGS
$tags = wp_get_object_terms($postarr['post_ID'], 'post_tag');
$imgTags = array();

if( !empty($tags) ):
foreach( $tags as $tag ):
array_push($imgTags, $tag->name);
endforeach;
endif;

//      REPLACES THE IMAGE URL IN THE CONTENT, WITH <IMG> TAGS WITH SPECIFIC STYLES
$data['post_content'] = str_replace(
$imgURL,
'<!-- '.$imgURLoriginal.' -->
<p style="text-align:center"><a href="' . $localURL . '" class="everlightbox-trigger"><img src="' . $localURL . '" alt="' . implode($imgTags, ', ') . '" style="width:100%;"></a></p>',
$data['post_content']
);

endforeach;

return $data;

} add_filter('wp_insert_post_data' , 'customPostSave' , '99', 2);

1 个答案:

答案 0 :(得分:0)

由于缺乏信息,很难为您提供良好的答案。您应该使用echo '<pre>', print_r($matches[0]), '</pre>';的输出来更新您的问题,以便我们知道您正在使用什么数据。

如果全部以“ <-”开头,则可以这样操作:

foreach($matches[0] as $imgURL) {
    if(substr($imgURL, 0, 3) !== "<--") {
        echo $imgURL;
    }
}