سؤال

لقد كنت أتطلع حولها ولكن لم أجد حلا بعد. أحاول أن أشعل مستند HTML واحصل على النص بين تعليقين غير قادرين على القيام بذلك بنجاح حتى الآن.

أنا أستخدم PHP وقد جربت PHP Simple Dom Garser الموصى بها هنا عدة مرات ولكن لا يمكن أن يبدو أنها تحصل عليه للقيام بما أريد.

إليك (جزء من) الصفحة التي أرغب في تحليلها:

<div class="class">
  <!-- blah -->
    text
  <!-- end blah -->

  Text I want

  <!-- blah -->
    text
  <!-- end blah -->
</div>

شكرًا

هل كانت مفيدة؟

المحلول

على افتراض أن كل تعليق مختلف (أي "BLAH" ليس هو نفسه في الأقسام الأولى والثانية)، يمكنك استخدام بعض بسيط strpos للاستيلاء على كل شيء بينهما. التعبيرات العادية ليست ضرورية.

$startStr = '<!-- end blah1 -->';
$endStr = '<!-- start blah2 -->';

$startPos = strpos($HTML, $startStr) + strlen($startStr);
$endPos = strpos($HTML, $endStr );

$textYouWant = substr($HTML, $startPos, $endPos-$startPos);

إذا كانت مجموعتي التعليقات نكون نفس الشيء، ستحتاج إلى تعديل هذا للعثور على "blah" الثاني، باستخدام strposoffset معامل

نصائح أخرى

ربما يمكنك استخدام التعبيرات العادية؟

$text = '
<div class="class">
  <!-- blah -->
    text
  <!-- end blah -->

  Text I want

  <!-- blah -->
    text
  <!-- end blah -->
</div>
';

$regex = '/(<!-- end blah -->)(.*?)(<!-- blah -->)/ims';
$match = preg_match_all ($regex, $text, $matches);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top