• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
برداشتن اطلاعات بین دو تگ
#1
ســلام . ببینید من این کد رو دارم که با استفاده از یک تابع ، از بین دو تگ رشته مورد نظر رو انتخاب می کنه ، اما مشکلی که داره اینکه فقط اولین رشته رو برمی داره ، یعنی فقط salam رو چاپ می کنه، چطوری باید تغییرش بدم که HI ، khodahafez و Bye هم چاپ بشن ، یا هرکدوم رو به ترتیب داخل یک اندیس از آرایه بریزم.
پی نوشت : من روحیات ظریفی دارم آ ، قبلا" از اینکه لطف کنید و پاسخ بدین بهم خوشامد هم بگین واسه ورود به انجمن


کد:
$body='\' <td>  salam <td> \' '."";
$body=$body.'\' <td>  HI <td> \' '."";
$body=$body.'\' <td>  khodahafez <td> \' '."";
$body=$body.'\' <td>  bye <td> \' '."";

//echo $body;
function cut_str($str, $left, $right) {
    $str = substr ( stristr ( $str, $left ), strlen ( $left ) );
    $leftLen = strlen ( stristr ( $str, $right ) );
    $leftLen = $leftLen ? - ($leftLen) : strlen ( $str );
    $str = substr ( $str, 0, $leftLen );
    return $str;
}
  
//str="test''";
$TEST=cut_str($body,'\' <td>',' <td> \'');
echo "</br>";
echo $TEST;
  پاسخ
تشکر شده توسط :
#2
چرا از این استفاده نمی کنی؟

http://php.net/manual/en/class.domdocument.php

اینم روش استفاده ش:

http://stackoverflow.com/questions/74578...m-document
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط : بیتا حکمت
#3
(۱۳۹۳ بهمن ۲۵, ۰۵:۳۱ ب.ظ)molana نوشته: چرا از این استفاده نمی کنی؟

http://php.net/manual/en/class.domdocument.php

اینم روش استفاده ش:

http://stackoverflow.com/questions/74578...m-document

لینک دوم که گذاشتین ، مثالی که نوشته اینجوریه که هر دو طرف تگ برابر هستند مثلا رشته های بین تگ a رو برمی داره اما چیزی که من میخوام اینکه
عباراتی که بین دو رشته هست به دست بیاد مثلا ممکنه بخوام
عبارات " NO " و "Yes " رو بدست بیارم یعنی اگر متن به این صورت هست

**
لینک اول هم دیدم اما متوجه نشدم چطوری باید ازش استفاده کنم
  پاسخ
تشکر شده توسط :
#4
پس باید عنوان تاپیک رو عوض کنید. => برداشتن اطلاعات بین دو رشته خاص
اینم کد:
کد پی‌اچ‌پی:
$body '\' <t>  salam </d> \' '."";
$body .= '\' <td>  HI </td> \' '."";
$body .= '\' <td>  khodahafez </td> \' '."";
$body .= '\' <td>  bye </td> \' '."";

function 
cut_str($str$left$right) {
preg_match_all("/$left(.*?)$right/s",$str,$out);
return 
$out;
}
$result cut_str($body,'\<t\>','\<\/d\>');
if( 
is_array($result[1]) ){
    foreach (
$result[1] as $r)
        echo 
$r.'<br>';
}else{
    echo 
'no match';

به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : بیتا حکمت
#5
(۱۳۹۳ بهمن ۲۵, ۰۶:۰۵ ب.ظ)sara147 نوشته: پس باید عنوان تاپیک رو عوض کنید. => برداشتن اطلاعات بین دو رشته خاص
اینم کد:
کد پی‌اچ‌پی:
$body '\' <t>  salam </d> \' '."";
$body .= '\' <td>  HI </td> \' '."";
$body .= '\' <td>  khodahafez </td> \' '."";
$body .= '\' <td>  bye </td> \' '."";

function 
cut_str($str$left$right) {
preg_match_all("/$left(.*?)$right/s",$str,$out);
return 
$out;
}
$result cut_str($body,'\<t\>','\<\/d\>');
if( 
is_array($result[1]) ){
    foreach (
$result[1] as $r)
        echo 
$r.'<br>';
}else{
    echo 
'no match';


در مورد تغییر عنوان حق با شماست ، اما خروجی کد شما هم همون
" salam " هست ، من عرض کردم کل متن هایی که بین دو رشته منظور هست رو به دست بیارم .
  پاسخ
تشکر شده توسط :
#6
قبل از اینکه کد رو کپی کنید، لطفا فقط یکبار کد رو مطالعه کنید، فقط یکبار کافیه. Sleepy
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : بیتا حکمت
#7
(۱۳۹۳ بهمن ۲۵, ۰۹:۰۳ ب.ظ)sara147 نوشته: قبل از اینکه کد رو کپی کنید، لطفا فقط یکبار کد رو مطالعه کنید، فقط یکبار کافیه. Sleepy

دوست عزیز ، شما یا میخواین کمک کنید یا نمیخواید کمک کنید ، من کدی رو که مشکل داشتم نوشتم ، توضیحاتم هم نوشتم .
کدی که شما نوشتین اون چیزی نیست که من نیاز دارم .
پس مشخص بود چی میخوام . این کار شما باعث میشه شخص دیگری هم که در توانش هست جواب بده با این فکر که مشکل حل شده ، جواب نده !
بنابراین اگر میخواین کمک کنید راهنمایی اتون باید مربوط به سوال باشه ، نه اینکه صورت مساله رو عوض کنید و یک کد دیگه بزارین یا اینکه کلا" چیزی ننویسید بهتره [/b]
  پاسخ
تشکر شده توسط :
#8
ببین دوست عزیز:
تا جایی که من می دونم شما یه متن HTML دارید و می خواید محتوای داخل td ها رو بردارید.

خب این روش شما اصلن درست نیست. برای اینکه فاصله ها ممکنه تغییر کنه یا هر چیز دیگه
یه space بیشتر بخوره کل کارت جواب نمی ده دیگه!!!

چرا از یه روش بهتر و درست تر استفاده نمی کنی؟

در ضمن کد ایشون هم درسته. فقط یه جا غلط تایپی داشت:
کد پی‌اچ‌پی:
<?php 

$body 
'\' <td>  salam </td> \' '."";
$body .= '\' <td>  HI </td> \' '."";
$body .= '\' <td>  khodahafez </td> \' '."";
$body .= '\' <td>  bye </td> \' '."";

function 
cut_str($str$left$right) {
    
preg_match_all("/$left(.*?)$right/s",$str,$out);
    return 
$out;
}
$result cut_str($body,'\<td\>','\<\/td\>');

if( 
is_array($result[1]) ){
    foreach (
$result[1] as $r)
        echo 
$r.'<br>';
}else{
    echo 
'no match';


?>
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط : بیتا حکمت
#9
(۱۳۹۳ بهمن ۲۵, ۰۹:۴۴ ب.ظ)molana نوشته: در ضمن کد ایشون هم درسته. فقط یه جا غلط تایپی داشت:
چون ایجاد کننده تاپیک گفت که "میخوام بین دو رشته خاص باشه"، من تگ رو به رشته خاص تغییر دادم.
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : بیتا حکمت
#10
ممنونم جناب molana ، مشکل حل شد
اشتباه از من بود که دقت به کد sara147 نکردم ، الان متوجه شدم چرا گفتن یه بار بخون ، امیدوارم به خاطر لحن حرفام ببخشن منو
  پاسخ
تشکر شده توسط : molana


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان