Модуль на Си для упрощенной работы с базами SQLite
Ожидает приглашения
Этот модуль был написан мною в рамках одного проекта. Немного упрощает код запросов к базам данных SQLite 3.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>RemoteSystemsTempFiles</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.dltk.core.scriptbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
<nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>
if ($post->post_parent)
$children = wp_list_pages("depth=1&title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("depth=1&title_li=&child_of=".$post->ID."&echo=0");
$children = preg_replace('/<li\s+[^>]*?class="[^"]*(?:current_page_item)[^"]*"[^>]*>((?:(?!<\/li>).)*)<\/li>/si','!',$children);
$children = preg_replace('/<[\/\!]*?li[^<>]*?>/si','',$children);
$test = explode("
", $children);$result = "";
for ($i=0;$i<count($test);$i++) {
$tmp = $test[$i];
if ($tmp[0]=="!" || $tmp[1]=="!") {
$result = substr($test[$i]."
",2);if(strlen($result)>5) {
$max_symb = 29;
for ($i=0; $i<strlen($result); $i++) {
if ($result[$i] == ">") break;
}
for ($k=$i; $k<strlen($result); $k++) {
if (substr($result,$k,4) == "
") break;$tmp = substr($result,$i+1,$k-$i-1);
if (strlen($tmp)>$max_symb) {
$res2 = substr($result,0,$i+1);
$res2.= substr($tmp,0,$max_symb)."...";
$res2.= substr($result,$k);
}
что-то типа этого.
Затем к $res2 добавляем часть строки названия ссылки до максимального символа(29-го) и троеточие на конце.
И потом добавляем из оригинальной строки окончания после символа < включительно, получается закрытие тега а.
Результате всех этих действий в $res2 у нас теперь хранится ссылка с названием следующей страницы (по order), находящейся в той же категории что и текущая и если длина названия следующей страницы больше 29 символов - обрублена до 29 и добавлено троеточие. Вот, попытался поделиться этим извращённым хардкордом который мне пришлось однажды написать, не найдя к-нить простого готового решения для такой тривиальной задачки, далее прилагаю полный листинг кода и ссылку на проект где это было использовано http://staging.widefunnel.com/ (смотреть внизу страницы, чуть позже и возможно на самом widefunnel.com, сейчас недоступно - наверное переносят, они еще давно хотели, это был редизайн блога)
Полный код:
<?php
if ($post->post_parent)
$children = wp_list_pages("depth=1&title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("depth=1&title_li=&child_of=".$post->ID."&echo=0");
$children = preg_replace('/<li\s+[^>]*?class="[^"]*(?:current_page_item)[^"]*"[^>]*>((?:(?!<\/li>).)*)<\/li>/si','!',$children);
$children = preg_replace('/<[\/\!]*?li[^<>]*?>/si','',$children);
$test = explode("", $children);
$result = "";
for ($i=0;$i<count($test);$i++) {
$tmp = $test[$i];
if ($tmp[0]=="!" || $tmp[1]=="!") {
$result = substr($test[$i]."
",2);
break;
}
}
?>
<?php if(strlen($result)>5) {?>
<?php
$max_symb = 29;
for ($i=0; $i<strlen($result); $i++) {
if ($result[$i] == ">") break;
}
for ($k=$i; $k<strlen($result); $k++) {
if (substr($result,$k,4) == "
") break;<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0"
width="x" height="y">
<embed src="intro.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="x" height="y" bgcolor="" wmode="transparent">
Content
,где
x, y — ширина и высота flash-объекта.
Content — содержимое, располагаемое над flash-объектом.
Проверено на работоспособность в FireFox, Opera, Internrt Explorer