احسان
5 سال پیش توسط احسان مطرح شد
3 پاسخ

نحوه گرفتن متن درون یک تگ HTML با Regex PHP

سلام

میشه یه راهنمایی کنید که چطور متن درون یک تگ رو با استفاده ازregex بگیرم من اطلاعات یک صفحه رو با simple_html_dom گرفتم

این ساختار html:

<li class="list-item p-a-0 content-rating">
<b class="inline">Rating:</b>
  13+ - Teens 13 or older
</li>
<li class="list-item p-a-0">
<b class="inline">Country:</b>
   China
</li>

مثلا فقط اسم کشور که China هست رو می خوام یا مثلا رده سنی +13 - Teens 13 or older

این کد های regex منه

<?php
if(preg_match('/Country/i', $subelement->innertext)){
 preg_match_all('/\D/g', $element->plaintext, $matches);
 $country = implode(',', $matches[0]);
}
?>

ثبت پرسش جدید
Mohammad Amin Mokhtari
تخصص : برنامه نویس
@amin.mokhtari94 5 سال پیش مطرح شد
1

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

  • حروف انگلیسی بزرگ و کوچک
  • اعداد
  • _
  • فاصله
    باشد را قبول می کند

در صورت وجود کاراکتری غیر از لیست بالا، مقدار داخل تگ بازگشت داده نمی شود

$re = '/>((\s|[a-zA-Z]|[0-9]|_|-|\+)+\s)</m';
$str = '<li class="list-item p-a-0 content-rating">
<b class="inline">Rating:</b>

  13+ - Teens 13 or older

</li>
<li class="list-item p-a-0">
<b class="inline">Country:</b>

   China

</li>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$result=[];
// Print the entire match result
foreach ($matches as $match) {
    $m=trim($match[1]);
    if (strlen($m)>2) {
        array_push($result, trim($match[1]));
    }

}
var_dump($result);

Mohammad Amin Mokhtari
تخصص : برنامه نویس
@amin.mokhtari94 5 سال پیش مطرح شد
1

در این لینک می توانید تست های خود را انجام بدهید:
https://regex101.com/r/nlUOA0/2


احسان
تخصص : دانشجو عمران
@reza77t 5 سال پیش مطرح شد
0

@amin.mokhtari94
ممنون کدی که فرستادیت به خوبی کار می کنه
اگه بتونید با کد زیر هماهنگ کنید خیلی ممنون میشم:

<?php
 if(preg_match('/Country/i', $subelement->innertext)){

 }
 ?>

$subelement->innertext همون $str هست


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام