ограничение на символите ..

morkov4o

Registered
Здравейт! Иамм текст в ДБ-то и го изкарвам :) как да го направя да изкарва да кажем 100 символа от него :) Благодаря предварително!
 
morkov4o каза:
Здравейт! Иамм текст в ДБ-то и го изкарвам :) как да го направя да изкарва да кажем 100 символа от него :) Благодаря предварително!
работа с под стрингове
заявката ти става нещо такова (ако полето се казва text )
SELECT SUBSTRING(text,1,100) AS subtext FROM table
 
Благодаря благодаря :D
 
И моя код за думите :)

<?
$opis_n="Низа, от който се взема дадена част";

if(strlen($opis_n) < 119)
{
$mn=$opis_n;
}
else
{
$opis_n=substr ("$opis_n",0,120);
$pm=explode (" ",$opis_n);

$kolko=count($pm);
$mn="";

for ($i=0; $i<($kolko-1); $i++)
{
$mnenieto=$pm[$i];
$mn.=" $mnenieto";
}
}

echo "$mn... (още)";
?>


Не задавате брой на думите, а брой на символите (в примера 120) - така отрязаните части от текстовете ще бъдат почти идентични като дължина.
Как работи скрипта?
С функцията strlen(); броим символите на целия низ. Ако са по-малко от указаното (119 в случая), принтираме целия низ.
Ако са повече (else-условието), чрез substr(); вземаме от низа определения брой символи (в примера 120). Тъй като substr(); брои символи, а не думи, има голям шанс да сме отрязали последната, което е малко неприятно. За да премахнем този ефект, използваме explode(); която е функция за разделяне на низове според зададено условие.
Условието зададено тук е интервал - т.е. празното разстояние между думите.
Експлоуд връща масив, чийто елементи са думите от отрязъка. Нуждата от това усложнение ще разберете, когато погледнете обхождането на масива.
Проверяваме, колко думи-елементи в масива сме получили от отрязъка и го обхождаме като на променливата $mn добавяме допълнителна стойност чрез Оператора за конкатениране и присвояване (.=)
За да избегнем по-късно листване на отрязана дума, пропускаме последния елемент в масива.
Накрая принтираме стойността на $mn, добавяйки и многоточие и пояснението (още), което чрез анчър можете да превърнете във връзка към целия текст.
 

Back
Горе