私はこのショートコードを持っています
[learn_more caption="something here:"]
[/learn_more]
キャプション値を抽出し、他のものを削除したいです。 「ここに何か」
これは私が持っているコードですが、それはそのままショートコードを出力します。
$exclude_codes = 'learn_more';
$wp_content = preg_replace("~(?:\[/?)(?!(?:$exclude_codes))[^/\]]+/?\]~s", '', $wp_content);
ありがとう
助けてくれてありがとう、実際に私は正規表現をまったく使わずに問題を解決した。 PDFにイベントページを出力しようとしたときにwp-event-managerと一緒にwp-mpdfプラグインを使用します。しかし、いくつかのカスタマイズの後、私はさまざまな場所からコンテンツを取得することができ、問題は解決されました。
mpdf_output関数内のwp-mdf.phpからのコード
$EM_Event = em_get_event($post->ID, 'post_id');
$wp_content = '';
$header_content = '<h1></h1>';
$footer_content = '';
$header_content .= '<h2><a href="' . get_permalink() . '" rel="bookmark" title="Permanent Link to ' . the_title('','', false) . '">' . the_title('','', false) . '</a></h2>';
$header_content .= '<h3>'.$EM_Event->output('#_EVENTDATES').'</h3>';
$header_content .= '<h3>' .$EM_Event->output('#_LOCATIONNAME') . ' - ' .$EM_Event->output('#_LOCATIONCOUNTRY'). '</h3>';
$footer_content .= '<div id="footer">';
$footer_content .= '<strong></strong>';
$footer_content .= "<div>";
$wp_content .= $header_content;
$wp_content .= apply_filters('the_content', $wp_content);
$wp_content .= $footer_content;
私はあなたの質問を@ eric-holmesとは違った方法で読みました。あなたのショートコードはほとんどの状況下で正常に機能する必要があるように私には思えますが、あなたは特別な状況下で情報を抽出しています。
ショートコードの正規表現は注意が必要です。 WordPressにあなたのためにやらせましょう。
$pattern = get_shortcode_regex();
preg_match_all("/$pattern/",$wp_content,$matches);
$wp_content
に存在するすべてのショートコードの属性は$matches[3]
になります。あなたは何かをしたいのですが….
$lm_shortcode = array_keys($matches[2],'learn_more');
if (!empty($lm_shortcode)) {
foreach($lm_shortcode as $sc) {
$captions[] = $matches[3][$sc];
}
}
そこに "caption ="があるので、あなたはまだ少し文字列をきれいにする必要があるでしょう、しかしあなたはあなたが始めた場所よりはるかに先に進んでいます、そしてあなたは$captions
を にセット複雑さに応じて、str_replace
または preg_replace
が必要です。