PDA

View Full Version : سوال: چطوری باید سیستم برچسب ها بسازم؟



theboy
پنج شنبه 12 بهمن 1391, 16:53 عصر
سلام.
چطور می تونم برای پست هام برچسب بذارم؟ به طوری که بگم برچسب ها رو با , جدا کنید.

هیچ راهی به سرم نمیرسه پس لطفا یه راهنمایی کامل و اگه میشه با مثال بکنید.
ممنون.

h.rezaee
پنج شنبه 12 بهمن 1391, 17:18 عصر
سلام . دوست عزیز یکی از دوستان گل روزگار ( آقا مصطفی ) کلاسی نوشته بود که همین کار رو می کرد به اسم plugs ( اگه اشتباه نکنم ) یه سرچ کوچیک تو همین وب سایت میتونه کمکت کنه

theboy
پنج شنبه 12 بهمن 1391, 17:45 عصر
حرف کلاس رو وسط نیار که هیچی ازش نمی فهمم! من معمولی برنامه نویسی می کنم. بازم ممنون :x

siavashsay
پنج شنبه 12 بهمن 1391, 18:05 عصر
یک تابع هست که میگرده توی ورودی و یا متن شما و بیشترین کلمات موجود توی اون متن رو به عنوان keyword انتخاب میکنه و توی خروجی بهت میده !
مثلا اگر توی متن شما کلمه search رو 2 بار تکرار و کلمه article رو 3 بار تکرار شده باشه اون 2 کلمه رو به عنوان keyword به شما میده و شما میتونید اونها رو توی یک تگ h1 و یا strong بگذارید تا گوگل به عنوان کلمات مهم و کلیدی ازش استفاده کنه !
این تابع :

function extract_keywords($str, $minWordLen = 3, $minWordOccurrences = 2, $asArray = false, $maxWords = 8, $restrict = false)
{
$str = str_replace(array("?","!",";","(",")",":","[","]"), " ", $str);
$str = str_replace(array("\n","\r"," "), " ", $str);
strtolower($str);

function keyword_count_sort($first, $sec)
{
return $sec[1] - $first[1];
}
$str = preg_replace('/[^\p{L}0-9 ]/', ' ', $str);
$str = trim(preg_replace('/\s+/', ' ', $str));

$words = explode(' ', $str);

// Only compare to common words if $restrict is set to false
// Tags are returned based on any word in text
// If we don't restrict tag usage, we'll remove common words from array
if ($restrict == false) {
//Full list of common words in the downloadable code
$commonWords = array('a','able','about','above','abroad','accordi ng');
$words = array_udiff($words, $commonWords,'strcasecmp');
}

// Restrict Keywords based on values in the $allowedWords array
// Use if you want to limit available tags
if ($restrict == true) {
$allowedWords = array('engine','boeing','electrical','pneumatic',' ice');
$words = array_uintersect($words, $allowedWords,'strcasecmp');
}

$keywords = array();

while(($c_word = array_shift($words)) !== null)
{
if(strlen($c_word) < $minWordLen) continue;

$c_word = strtolower($c_word);
if(array_key_exists($c_word, $keywords)) $keywords[$c_word][1]++;
else $keywords[$c_word] = array($c_word, 1);
}
usort($keywords, 'keyword_count_sort');

$final_keywords = array();
foreach($keywords as $keyword_det)
{
if($keyword_det[1] < $minWordOccurrences) break;
array_push($final_keywords, $keyword_det[0]);
}
$final_keywords = array_slice($final_keywords, 0, $maxWords);
return $asArray ? $final_keywords : implode(', ', $final_keywords);
}
نحوه استفاده :

echo extract_keywords($text);
موفق باشید :)

theboy
پنج شنبه 12 بهمن 1391, 18:32 عصر
نه راستش یه چیزی می خوام برای مدیریت محتوا.
بعد از textareaی متن، یه text برای برچسب ها باشه که برچسب ها رو با , بشه جدا کرد، بعد زیر هر پست برچسباش رو نشون بده، و بشه با کلیک روی برچسب پستهاش رو دید.(مثل وردپرس،بلاگفا و...)

siavashsay
پنج شنبه 12 بهمن 1391, 19:21 عصر
این کد رو نوشتم !
واسه من به خوبی عمل کرد !

$text=$_POST['text'];
$numKeys=substr_count($text, ',');
for($i=0;$i<=$numKeys;$i++){
$exp=explode(",",$text);
$tags=$exp[$i];
echo "<a href='your_link.php'><strong>$tags</strong></a> , ";
}
توضیح !
تابع substr_count میگرده دنبال کاراکتر مد نظر شما و چک میکنه که ببینه چندتا ازون کاراکتر وجود داره ! در اینجا انگار میگرده دنبال کاراکتر , و مقدار رو به عدد به متغیر numKeys میده!
بعد توسط یک حلقه شما کلمات رو توسط تابع explode جداسازی میکنید و هرکدوم رو بهصورت یک لینک echo میکنید !
تست کنید و چنانچه موثر بود خبرش رو بدید :)
موفق باشید

theboy
پنج شنبه 12 بهمن 1391, 19:33 عصر
خیلی ممنونم.
این روش خوبیه ولی به نظرم کامل نیست
چون اون موقع مثلا من بخوام پست هایی که تگ "php" رو دارن نمایش بدم به مشکل بر می خورم.

siavashsay
پنج شنبه 12 بهمن 1391, 19:37 عصر
دوست عزیز !
میشه بگید نحوه وارد کردن متن شما چطوری هست ؟!
توسط textarea ؟ یک متن ؟ یک فایل ؟ یا هرچیز دیگه ای ؟!
در اینجا من طوری نوشتم که شما خودت داخل textarea کلمات کلیدی رو وارد کنی مثلا key1 , key2 , key3 بعد این تابع اوها رو تبدیل میکنه !
اما اگه نحوه ورودی شما چیز دیگه ای هست بگید تا اونها رو فیلتر کنیم !
:)

theboy
پنج شنبه 12 بهمن 1391, 19:56 عصر
ببین
یه صفحه ارسال پس دارم، توش یه اینپوت برای عنوان، یه textarea برای متن و یه اینپوت هم برای برچسب هاست که برچسب ها با , از هم جدا میشند.
بعد از ارسال برچسب ها در دیتابیس و در tabel پست ها داخل فیلد tag ذخیره میشن.

siavashsay
پنج شنبه 12 بهمن 1391, 20:04 عصر
خوب دوست عزیز !
اگه سیستم شما اینه که کاری نداره !
شما از کاربر یا اون کسی که میخواد تگ ها رو وارد کنه چطوری میگیری متنش رو ؟!
به اینصورت : tag1,tag2,tag3,tag4
خوب حالا همین رو همینطوری بریز توی دیتابیس و بعد موقع فراخوانی از تابعی که دادم استفاده کن !
اگر هم میخوای کاربر تگی رو وارد نکنه از تابع strip_tags استفاده کن !
مثلا اگر کاربر اینطوری چیزی رو وارد کنه :

<h1>tag</h1> - <script>tag</sctip> - <strong>tag</strong>
تابع strip_tags همه اون تگها رو حذف میکنه یا متیونید با تابع str_replace کلمات مورد نظر رو حذف کنید

theboy
پنج شنبه 12 بهمن 1391, 20:53 عصر
:|
دوست عزیز، می گم می خوام پیشرفته تر باشه، مثلا اگر روی یکی از تگ ها کلیک شد کل پست هایی که اون تگ رو دارن نمایش داده بشن.

siavashsay
پنج شنبه 12 بهمن 1391, 21:13 عصر
خوب این جمله شما اصلا ربطی به این قسمت نداشت !
شما باید توی لینکی که برای تگ ها تعریف میکنی اینکارو بکنی !
ثبت تگ ها در دیتابیس چه ربطی به نمایش اونها داره ؟!
شما باید لینک رو به این صفحه ( مثلا ) بدی :
http://www.site.com/tags/script
حالا باید توی صفحه tags متغیر script رو بگیری و اون رو نشون و یک کوئری بزنی که هرچی اطلاعات مربوط به script هست رو از توی دیتابیس در بیاره و توی اون صفحه نشون بده !
دیگه واقعا نمیدونم چطوری باید منظورمو برسونم !
انشالله که موفق بشید !
یا حق !

theboy
جمعه 13 بهمن 1391, 01:55 صبح
میشه این روشی که گفتید رو یه بار از اول با مثال شرح بدید؟ اصلا تو مخم نمیره :-?

theboy
شنبه 14 بهمن 1391, 21:36 عصر
آقا کسی نبود ما رو در این زمینه روشن کنه؟ :گریه:

mohsen6500
شنبه 14 بهمن 1391, 23:26 عصر
سلام
آقا سیاوش که توضیحات کامل رو داده دیگه چی میخوای؟
یکمی هم خودت سعی کنی چیزی نمیشه ها!
با یک دستور مای اس کیو ال می تونی جستجو رو بین مطالبی که از برچسب مورد نظر استفاده کردن رو پیدا کنی
مثلا این یه نمونه جستجو هستش!
tags$ هم همون کلمه ی مورد جستجو هستش
که معمولا با استفاده از متد گت دریافت میشه

"SELECT * FROM `post` WHERE `key` LIKE '%$Tags%' "

masato
یک شنبه 15 بهمن 1391, 10:39 صبح
سلام
من توی کد بالا این قسمت

function extract_keywords($str, $minWordLen = 3, $minWordOccurrences = 2, $asArray = false, $maxWords = 8, $restrict = false)
{
$str = str_replace(array("?","!",";","(",")",":","[","]"), " ", $str);
$str = str_replace(array("\n","\r"," "), " ", $str);
strtolower($str);

function keyword_count_sort($first, $sec)
{
return $sec[1] - $first[1];
}
$str = preg_replace('/[^\p{L}0-9 ]/', ' ', $str);
$str = trim(preg_replace('/\s+/', ' ', $str));

$words = explode(' ', $str);
شما توی یه تابع یه تابع دیگه نوشتی این خطا نیست آخه من امتحان کردم کار نکرد:متفکر:
اینم کد

<?php
test1();

?>

<?php
function test1()
{
echo 'meysam1';

test2();


function test2()
{
echo 'meysam2';
}

}

?>

اینم خروجی
meysam1
Fatal error: Call to undefined function test2() in E:\wamp3\www\test\index.php on line 10

siavashsay
یک شنبه 15 بهمن 1391, 11:23 صبح
شما توی یه تابع یه تابع دیگه نوشتی این خطا نیست آخه من امتحان کردم کار نکرد
خیر - خطا نیست ! برای من که کار کرد ! ضمنا این تابع رو من از یک سایت معروف پیدا کردم ( خودم ننوشتم ! )
اما گمونم مشکل شما اینه که قبل از اینکه تابع رو تعریف کنید اون رو فراخوانی کردید !
کدتون رو اینطوری اصلاح کنید و نتیجه درست رو میبینید !

<?php
function test2()
{
echo 'meysam2';
}
function test1()
{
echo 'meysam1';
test2();
}
test1();
?>

masato
یک شنبه 15 بهمن 1391, 11:27 صبح
تابع keyword_count_sort


function extract_keywords($str, $minWordLen = 3, $minWordOccurrences = 2, $asArray = false, $maxWords = 8, $restrict = false)
{
$str = str_replace(array("?","!",";","(",")",":","[","]"), " ", $str);
$str = str_replace(array("\n","\r"," "), " ", $str);
strtolower($str);

function keyword_count_sort($first, $sec)
{
return $sec[1] - $first[1];
}
$str = preg_replace('/[^\p{L}0-9 ]/', ' ', $str);
$str = trim(preg_replace('/\s+/', ' ', $str));

$words = explode(' ', $str);

siavashsay
یک شنبه 15 بهمن 1391, 11:46 صبح
لطفا خط یا کدی که الان مشکل توش هست رو بگید !
نه اینکه ( شما کدتون رو نگاه کنید )
من اینو نگاه کردم !
شما بگید مشکلتون کجا - کدوم خط - کدوم کد - کدوم ... هست ؟!
ضمنا - این هم منبع و اون سایتی که کد رو گرفتم ازش :
http://snipplr.com/view/63015/

theboy
دوشنبه 16 بهمن 1391, 23:00 عصر
خیلی ممنون ولی این راه برای کار من جواب نمیده.(هر چند صحیحه) راه دیگه ای سراغ ندارید؟

siavashsay
سه شنبه 17 بهمن 1391, 09:55 صبح
تابع keyword_count_sort
هیچ مشکلی نداره !
اومده یک تابع رو تعریف کرده که آرایه هایی از متغیر رو برگشت بده !
مشکلش کجاس ؟!