我正在尝试允许用户(使用 Wordpress)插入基于人造标签的 jquery 幻灯片库( http://www.queness.com/resources/html/slideshow/jquery-slideshow.html )。例如:
[slideshow]
<img src="url" /><br />
<img src="url" />
[!slideshow]
会产生类似的东西
<div id="gallery">
<a href="#"><img src="url" /></a><br />
<a href="#"><img src="url" /></a><br />
</div>
我认为我遇到问题的地方是 jquery 代码要求 img 用锚标记括起来。这就是我所拥有的,但感谢 Wordpress,代码上方或下方的任何内容都没有正确格式化。我使用了 Wordpress 格式化功能,但它将每一行都包含在一个段落标签中,所以它只会破坏所有内容。
function make_slideshow($string) {
$patterns[0] = '/(\[\[slideshow\]\])/';
$patterns[1] = '/(\[\[\!slideshow\]\])/';
$replacements[0] = '<div id="gallery">';
$replacements[1] = '<div class="caption"><div class="content"></div></div></div>';
$replace = preg_replace($patterns, $replacements, $string);
$new_line = explode("\n", $replace);
foreach($new_line as $key => $value) {
if($value == "" || $value == " " || is_null($value)) {
unset($new_line[$key]);
}
}
$sorted_lines = array_values($new_line);
foreach($sorted_lines as $key => $value){
if( (stristr($value, 'href') === FALSE) && (stristr($value, 'img') !== FALSE) ){
$sorted_lines[$key] = '<a href="#">' . $value . '</a>';
}
if( (stristr($value, 'show') === FALSE) && ($key === 1) ){
$value = explode(" ", $value);
$value[0] .= ' class="show"';
$sorted_lines[$key] = implode(" ", $value);
}
}
返回 $sorted_lines;
};
通常我会在 SO 上找到所有其他答案,所以这只是我的第一个问题。我不知道其他人试图帮助我解决这个问题是否太大了,但我被困住了,所以我想我会试一试。