نمایش نتایج 1 تا 17 از 17

نام تاپیک: چگونگی گرفتن آیدی بخشی خاص در یک کد php

  1. #1

    چگونگی گرفتن آیدی بخشی خاص در یک کد php

    سلام چطور باید دستوری رو از تگ html به php فرستاد یا به عبارت دیگر این دستور رو توسط php دریافت کرد و خوند؟؟ مثلا در بلاگفا این کد رو ببینید

    <BlogPostBlock id=1>

    با قرار دادن این کد در قالب وبلاگ عدد 1 پایانی به php فرستاده میشه و در اون بخش فقط یک مطلب نمایش داده میشه حالا با تغییر

    <BlogPostBlock id=5>

    در اون بخش 5 تا مطلب نمایش داده میشه یعنی دستور در php دریافت میشه چطور اتفاق میفته؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  2. #2

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    کسی نمیدونه چطور انجام میشه؟؟؟؟؟؟؟؟؟؟

  3. #3
    کاربر دائمی آواتار ravand
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    راوند کاشان
    پست
    3,378

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    من سرویس های دیگه ی وبلاگی رو که دیدم معمولا توی خود سیستم مدیریت محتواش اینو تعیین میکنن. به نظرم هم اینطوری اصولی تره تا اینکه توی کدها اینو تعیین کنی.

  4. #4

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    نقل قول نوشته شده توسط ravand مشاهده تاپیک
    من سرویس های دیگه ی وبلاگی رو که دیدم معمولا توی خود سیستم مدیریت محتواش اینو تعیین میکنن. به نظرم هم اینطوری اصولی تره تا اینکه توی کدها اینو تعیین کنی.
    ممنون از پاسختون ولی من نیاز شدید به این روش دارم!!!
    لطفا یکی کمک کنه

  5. #5

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    معمولا از این فانکشن ها استفاده می کنند :


    function before($this, $inthat) {

    return substr($inthat, 0, strpos($inthat, $this));
    }
    function after($this, $inthat) {
    if(!is_bool(strpos($inthat, $this))) {
    return substr($inthat, strpos($inthat,$this)+strlen($this));
    }else{
    return false;
    }
    }


    function vasat ($this, $that, $inthat) {
    return before($that, after($this, $inthat));
    }


    $code = '<BlogPostBlock id=5>';
    $id = vasat ('<BlogPostBlock id=' , '>',$code);
    echo $id; // = 5 ! :)

  6. #6

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    نقل قول نوشته شده توسط prans.info مشاهده تاپیک
    معمولا از این فانکشن ها استفاده می کنند :


    function before($this, $inthat) {

    return substr($inthat, 0, strpos($inthat, $this));
    }
    function after($this, $inthat) {
    if(!is_bool(strpos($inthat, $this))) {
    return substr($inthat, strpos($inthat,$this)+strlen($this));
    }else{
    return false;
    }
    }


    function vasat ($this, $that, $inthat) {
    return before($that, after($this, $inthat));
    }


    $code = '<BlogPostBlock id=5>';
    $id = vasat ('<BlogPostBlock id=' , '>',$code);
    echo $id; // = 5 ! :)
    ممنون بابت راهنمایی
    ولی اگه ممکنه یکم کد رو توضیح بدید

  7. #7

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    راهی دیگه ای نیست برای این کار
    به دلایل نا معلومی این کد بین کد های دیگه کار نمیکنه
    وای به تنهایی به درستی کار میکنه

  8. #8

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    دوستان لطفا کمک هاتون رو دریغ نکنید

  9. #9

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    امیدی نیست ؟؟؟؟؟؟

  10. #10
    کاربر تازه وارد آواتار aalmair
    تاریخ عضویت
    آبان 1392
    محل زندگی
    http://arashcart.ir http://mag.arashcart.ir http://job.arashcart.ir
    پست
    99

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    من کدی دارم که برای سیستم وبلاگ دهی خودم ساختم اما خیلی زیاده . اگه خواستی پیغام بده
    وبلاگ من

  11. #11
    کاربر دائمی آواتار leaping
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران از سنندج
    پست
    480

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    دوست عزیز کافیه که کد قالبتون رو در قالب یک رشته بخونید و مقدار id رو استخراج کنید و به عنوان یک متغییر ازش استفاده کنید.

  12. #12

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    اگه فانکشنی با همین اسم ها وجود نداشته باشه (فانکشن چند بار تعریف نشده باشه ...) نباید مشکلی پیش بیاد . (اون قسمت از اسکریپت رو که کد رو قرار میدید مشکل پیدا می کنه رو برام بفرستید تا چک کنم)
    این کد بسیار ساده هست و ترکیبی از substr (برای بریدن بخش مشخصی از رشته) و strpos (برای پیدا کردن متن خاصی در رشته) و strlen (شمردن تعداد کاراکتر رشته) و کلا الگوریتم بسیار ساده ای داره که با توضیحات من فکر کنم دیگه متوجه شده باشید و نیاز به توضیح دیگه ای نباشه ...

  13. #13

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    بطور کلی اینجور کارها رو با RegExp و یا همین توابع ساده رشته ای میشه به راحتی انجام داد. البته سرویسهای وبلاگدهی از موتورهای قالب استفاده میکنن یا خودشون یکی برای کار خودشون طراحی میکنن.

  14. #14

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    نقل قول نوشته شده توسط leaping مشاهده تاپیک
    دوست عزیز کافیه که کد قالبتون رو در قالب یک رشته بخونید و مقدار id رو استخراج کنید و به عنوان یک متغییر ازش استفاده کنید.
    ممنون از توضیحاتتون
    نمونه کدی میتونید قرار بدید؟


    نقل قول نوشته شده توسط prans.info مشاهده تاپیک
    اگه فانکشنی با همین اسم ها وجود نداشته باشه (فانکشن چند بار تعریف نشده باشه ...) نباید مشکلی پیش بیاد . (اون قسمت از اسکریپت رو که کد رو قرار میدید مشکل پیدا می کنه رو برام بفرستید تا چک کنم)
    این کد بسیار ساده هست و ترکیبی از substr (برای بریدن بخش مشخصی از رشته) و strpos (برای پیدا کردن متن خاصی در رشته) و strlen (شمردن تعداد کاراکتر رشته) و کلا الگوریتم بسیار ساده ای داره که با توضیحات من فکر کنم دیگه متوجه شده باشید و نیاز به توضیح دیگه ای نباشه ...
    ممنون از توضیحاتتون
    مشکل اینجاست که قراره این عمل چندین بار تکرار بشه
    و با تکرار کد دیگه کارایی نداره
    بازم ممنون


    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    بطور کلی اینجور کارها رو با RegExp و یا همین توابع ساده رشته ای میشه به راحتی انجام داد. البته سرویسهای وبلاگدهی از موتورهای قالب استفاده میکنن یا خودشون یکی برای کار خودشون طراحی میکنن.
    تشکر از راهنماییتون
    از اینی که گفتید اصلا سررشته ای ندارم
    لطفا با یک مثال یا نمونه بیشتر راهنماییم کنید

  15. #15
    کاربر تازه وارد آواتار aalmair
    تاریخ عضویت
    آبان 1392
    محل زندگی
    http://arashcart.ir http://mag.arashcart.ir http://job.arashcart.ir
    پست
    99

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    کدی که خواسته بودین رو قرار دادم
    تذکر : برای اینکه با دستورات html ترکیب نشه تگ های که می خواهید استفاده کنید رو در آرایه all_box_list در خطوط اول قرار بدید (از حروف ، اعداد ، زیر خط و خط تیره در زبان انگلیسی استفاده کنید)

    تذکر 2: این کدی رو که گذاشتم کامل نیست و قرار نیست اون ها رو پردازش کنه و ممکن که هیچ خطایی نداشته باشد و فقط دستورات شما رو با غیر دستورات جدا می کند






    class blog_template_parse{


    private $starting_tag_char='<';
    private $endding_tag_char='>';



    private $all_box_list=array(
    "BlogPostBlock"
    );




    public function __construct(){










    }

    private function check_tag_exist($tagname=''){


    if(in_array($tagname,$this->all_box_list)){
    return 1;
    }
    return 0;

    }
    private function starting_character($chars=''){

    for($i=0,$s=strlen($chars);$i<$s;$i++){
    if(!(ctype_alnum($chars[$i])||$chars[$i]=='_'||$chars[$i]=='='||$chars[$i]=='#')){
    return 0;
    }
    }
    return 1;
    }
    private function cmd_character($chars=''){
    $flag=0;
    if(!($s=strlen($chars))){
    return 0;
    }
    for($i=0;$i<$s;$i++){
    if(!(ctype_alnum($chars[$i])||$chars[$i]=='_'||$chars[$i]=='-')){
    return 0;
    }
    }
    return 1;
    }
    private function variable_protocol($chars=''){
    if($s=strlen($chars)){
    if(ctype_alpha($chars[0])||$chars[0]=='_')
    {

    for($i=1;$i<$s;$i++){
    if(!(ctype_alnum($chars[$i])||$chars[$i]=='_')){
    return 0;
    }
    }
    return 1;
    }
    }
    return 0;
    }
    private function strip_space($str='',$size=0,$i=0,&$line_count=0){
    $line_count=0;
    while($i<$size&&ord($str[$i])<=32)
    {
    if(ord($str[$i])==10)
    {
    $line_count++;
    }
    $i++;
    }
    return $i;
    }
    private function attribute_parse($i=0,&$line_counter=0,&$res_attrib ute=array()){

    $line_counter=0 ;
    $str=$this->source_str;
    $size=$this->source_str_size;

    if(!(ord($str[$i])<=32||$str[$i]==$this->endding_tag_char)){
    return $i;
    }



    $temp_line_counter=0;
    $front_attribute_index=$i;

    $attributes=array();
    $i=$this->strip_space($str,$size,$i,$temp_line_counter);
    $line_counter+=$temp_line_counter;


    while($i<$size){

    if($str[$i]==$this->starting_tag_char){

    $res_attribute=$attributes;
    return $i;
    break;
    }elseif($str[$i]=='='&&ord($str[$i])>32){
    $attribute_name='';
    $e=$i-1;
    while($e>=0){
    if($e==$front_attribute_index) {
    $e++;
    break;
    }
    elseif(ord($str[$e])<=32){
    $e++;
    if(ord($str[$e])==10)
    {
    $line_counter++;
    }
    break;
    }
    $e--;

    }


    $i++;



    $attribute_name=substr($str,$e,$i-$e-1);





    if(!trim($attribute_name)){continue;}

    $attribute_value='';
    $i=$this->strip_space($str,$size,$i,$temp_line_counter);
    $line_counter+=$temp_line_counter;

    if($str[$i]=="'"){
    $i++;
    while($i<$size){
    if($str[$i]=="'")
    {
    $front_attribute_index=$i;
    break;
    }
    else
    {
    if(ord($str[$i])==10)
    {
    $line_counter++;
    }
    $attribute_value.=$str[$i];
    }

    $i++;
    }
    }elseif($str[$i]=='"'){
    $i++;
    while($i<$size){
    if($str[$i]=='"'){
    $front_attribute_index=$i;
    break;

    }else
    {
    if(ord($str[$i])==10)
    {
    $line_counter++;
    }
    $attribute_value.=$str[$i];
    }

    $i++;
    }
    }else{
    while($i<$size){
    if(ord($str[$i])<=32) {
    if(!isset($attributes[strtolower($attribute_name)])){
    $attributes[strtolower($attribute_name)]=$attribute_value;

    }
    if(ord($str[$i])==10)
    {
    $line_counter++;
    }
    $front_attribute_index=$i;
    break;
    }elseif($str[$i]==$this->endding_tag_char){
    if(!isset($attributes[strtolower($attribute_name)])){
    $attributes[strtolower($attribute_name)]=$attribute_value;

    }

    $res_attribute=$attributes;
    return $i;
    }
    $attribute_value.=$str[$i];
    $i++;
    }
    }

    if(!isset($attributes[strtolower($attribute_name)])){
    $attributes[strtolower($attribute_name)]=$attribute_value;

    }


    }

    $i++;
    }

    return $i;

    }
    public function literally_parse($source='',&$str_res='',&$error_st r=''){

    $error_str='';
    $str=$this->source_str=$source;
    $size=$this->source_str_size=strlen($source);
    $res=array();
    $stack=array();
    $temp_str='';
    $col=0;
    $row=1;
    $arr_loop_continue_stack=array();
    $i=0;
    $temp_line_counter=0;

    while($i<$size){


    if($i+1<$size && $str[$i]==$this->starting_tag_char && $this->starting_character($str[$i+1])){

    if(strlen($temp_str)){
    $res[]=array('t'=>'text','v'=>$temp_str);
    $temp_str='';
    }


    $succes_box='';


    $data_list=array();




    $start_element=$i;
    $endding_element_index=0;
    $i++;
    $temp_cmd_name='';
    $end_element=0;
    // $equal_sign=0;
    // $var_exist=0;
    // $block_or_loop_exist=0;
    // $var_list=array();
    // $block_content_error=0;
    $cmd_parameter=array();
    $cmd_parameter=array();
    // $special_block=0;
    $data_exist=0;
    $char_is_space=0;
    $char_is_colon=0;
    $char_is_dot=0;


    while($i<$size){

    //if(!$this->starting_character($str[$i])){
    // break;
    // }




    if(ord($str[$i])<=32||$str[$i]==$this->endding_tag_char)
    {

    if(ord($str[$i])<=32){
    $char_is_space=1;
    }


    if(!$data_exist)
    {


    if(strlen($temp_cmd_name))
    {



    if($this->check_tag_exist($temp_cmd_name))
    {





    $succes_box=strtolower($temp_cmd_name);


    if($char_is_space)
    {
    $i=$this->attribute_parse($i,$temp_line_counter,$attribute_ res);
    $row+=$temp_line_counter;
    $cmd_parameter=$attribute_res;
    }


    }
    else
    {
    break;
    }

    }else{
    if($char_is_space)
    {
    $i=$this->attribute_parse($i,$temp_line_counter,$attribute_ res);
    $row+=$temp_line_counter;
    $cmd_parameter=$attribute_res;
    }

    }
    }else
    {
    if(strlen($temp_cmd_name))
    {


    $data_list[]=strtolower($temp_cmd_name);



    if($char_is_space)
    {
    $i=$this->attribute_parse($i,$temp_line_counter,$attribute_ res);
    $row+=$temp_line_counter;
    $cmd_parameter=$attribute_res;
    }
    }
    else
    {

    break;
    }
    }







    if($i<$size&&$str[$i]==$this->endding_tag_char )
    {
    $end_element=1;
    $endding_element_index=$i;
    break;

    }else{
    break;
    }

    }
    elseif($i<$size){
    if(!$this->cmd_character($str[$i])){
    break;
    }
    $temp_cmd_name.=$str[$i];
    }



    $i++;
    }//end while


    // var_dump('start box',$succes_box);exit;
    // exit;




    if($end_element)
    {


    if(strlen($succes_box))
    { //parsing block








    if(empty($cmd_parameter))
    {

    $res[]=array('t'=>'start','v'=>$succes_box);
    }else
    {
    $res[]=array('t'=>'start','v'=>($succes_box),'p'=>$cmd_p arameter);
    }
    $stack=$succes_box;







    //$temp_str.=substr($str,$start_element,$i-$start_element+1);




    }else
    {
    $temp_str.=substr($str,$start_element,$i-$start_element+1);
    }



    }
    else{
    //error in syntax
    /*
    if(@$str[$i]==$this->starting_tag_char){ //starting new tag
    $temp_str.=substr($str,$start_element,$i-$start_element);
    continue;

    }else
    */
    {
    // var_dump('else');
    $temp_str.=substr($str,$start_element,$i-$start_element+1);
    }

    }



    }
    elseif($i+2<$size&&$str[$i]==$this->starting_tag_char&&$str[$i+1]=='/'&&$this->starting_character($str[$i+2])){


    $start_element=$i;

    $i+=2;
    if(strlen($temp_str)){
    $res[]=array('t'=>'text','v'=>$temp_str);
    $temp_str='';
    }


    $succes_box='';








    $endding_element_index=0;

    $temp_cmd_name='';
    $end_element=0;
    $char_is_space=0;
    $char_is_colon=0;
    $char_is_dot=0;

    while($i<$size){

    //if(!$this->starting_character($str[$i])){
    // break;
    // }




    if(ord($str[$i])<=32||$str[$i]==$this->endding_tag_char)
    {

    if(ord($str[$i])<=32){
    $char_is_space=1;
    }






    if(strlen($temp_cmd_name))
    {
    if($this->check_tag_exist($temp_cmd_name))
    {





    $succes_box=strtolower($temp_cmd_name);


    if($char_is_space)
    {
    $i=$this->attribute_parse($i,$temp_line_counter,$attribute_ res);
    $row+=$temp_line_counter;
    $cmd_parameter=$attribute_res;
    }


    }
    else
    {
    break;
    }

    }else{
    if($char_is_space)
    {
    $i=$this->attribute_parse($i,$temp_line_counter,$attribute_ res);
    $row+=$temp_line_counter;
    $cmd_parameter=$attribute_res;
    }

    }








    if($i<$size&&$str[$i]==$this->endding_tag_char )
    {
    $end_element=1;
    $endding_element_index=$i;
    break;

    }else{
    break;
    }

    }
    elseif($i<$size){
    if(!$this->cmd_character($str[$i])){
    break;
    }
    $temp_cmd_name.=$str[$i];
    }



    $i++;
    }//end while



    if($end_element&&strlen($succes_box))
    {




    if(empty($stack))
    {

    $temp_str.=substr($str,$start_element,$i-$start_element+1);

    break;
    //$error=('synatx error : endding tag without staring tag.') ; return 0;
    }


    /*
    $pop=array_pop($stack);
    if($pop!=$succes_box){

    $implode_start=implode(':',$pop);
    $implode_end=implode(':',$succes_box);

    $error_str='synatx error : starting with {'.$implode_start.'} but endding with {/'.$implode_end.'} on line '.$row.' .';
    return 0;
    }
    */



    $res[]=array('t'=>'end','v'=>$succes_box);





    }
    else
    {
    $temp_str.=substr($str,$start_element,$i-$start_element+1);
    }

    }
    else{

    $temp_str.=$str[$i];
    if(ord($str[$i])==10){
    $row++;
    }
    }
    $i++;
    }


    // if(!empty($error))
    // {
    // return 0;
    // }


    if(strlen($temp_str))
    {
    $res[]=array('t'=>'text','v'=>$temp_str);


    }
    /*
    if(!empty($stack))
    {

    while(!empty($stack))
    {
    $pop=array_pop($stack);
    $res[]=array('t'=>'end','v'=>($pop));
    }
    }
    */




    $str_res=serialize($res);


    return 1;
    }


    }



    $blog_template_parse=new blog_template_parse();


    $template="<BlogPostBlock id=55>this string</BlogPostBlock>";
    $blog_template_parse->literally_parse($template,$str_res,$blog_template _error);




    if(strlen($blog_template_error))
    {
    die($blog_template_error) ;
    }
    $arr=unserialize($str_res);



    var_dump($arr);





    خروجی

    array
    0 =>
    array
    't' => string 'start' (length=5)
    'v' => string 'blogpostblock' (length=13)
    'p' =>
    array
    'id' => string '55' (length=2)
    1 =>
    array
    't' => string 'text' (length=4)
    'v' => string 'this string' (length=11)
    2 =>
    array
    't' => string 'end' (length=3)
    'v' => string 'blogpostblock' (length=13)





  16. #16

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    بطور کلی اینجور کارها رو با RegExp و یا همین توابع ساده رشته ای میشه به راحتی انجام داد. البته سرویسهای وبلاگدهی از موتورهای قالب استفاده میکنن یا خودشون یکی برای کار خودشون طراحی میکنن.
    لطفا شما هم راه پیشنهادی خودتون رو با مثال قرار بدید تا مقایسه کنم

  17. #17

    نقل قول: چگونگی گرفتن آیدی بخشی خاص در یک کد php

    $str = <<<EOT
    <BlogPostBlock id=1>
    <BlogTitle>
    <BlogPostBlock id=5>
    <BlogCommentBlock>
    EOT;
    $blockPostBlocks = array();
    if(preg_match_all('#<blogpostblock\s+id=(\d+)>#im' , $str, $blockPostBlocks)) {
    echo '<p>You have ' . count($blockPostBlocks[1]) . ' "BlogPostBlock" tags:</p>' . PHP_EOL;
    foreach($blockPostBlocks[1] as $index => $bpb) {
    echo '<p>ID #' . $index . ' : ' . $bpb . '</p>' . PHP_EOL;
    }
    }

    /*
    Output:

    You have 2 "BlogPostBlock" tags:
    ID #0 : 1
    ID #1 : 5

    */

تاپیک های مشابه

  1. چگونگی گرفتن Backup و Restore کردن از اطلاعات SQL Server
    نوشته شده توسط samandari در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 24
    آخرین پست: سه شنبه 31 مرداد 1391, 21:27 عصر
  2. چگونگی گرفتن خروجی از Stored Procedure
    نوشته شده توسط Maryam80 در بخش VB.NET
    پاسخ: 5
    آخرین پست: شنبه 24 بهمن 1388, 12:25 عصر
  3. گرفتن یه Query خاص
    نوشته شده توسط آیدا رضایی در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: شنبه 30 اردیبهشت 1385, 08:16 صبح
  4. چگونگی فراخوانی یک صفحه خاص
    نوشته شده توسط balis_pascal در بخش PHP
    پاسخ: 5
    آخرین پست: دوشنبه 29 اسفند 1384, 22:52 عصر
  5. چگونگی فراخوانی یک صفحه خاص(خواهشا فوری)
    نوشته شده توسط balis_pascal در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 26 اسفند 1384, 00:07 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •