سؤال

أنا بحاجة إلى استخدام preg_reg على بعض سلسلة مع المحتوى من ملف html.

$file = file_get_contents($path);
$html_array = explode(' ', $file);

المشكلة هي أن مجموعة تبدو في بعض الأحيان مثل هذا:

[77]=>
    string(35) "<div>
</div>
<br>
{{testto}}
<br>"

لقد حاولت وضع بعض whitespaces هناك..:P لا تعمل..:/ في وقت لاحق سأقوم preg_grep مثل هذا:

$childframes = preg_grep('!\{\{(\w+)\}\}!', $html_array);
$retur = array();
foreach($childframes as $v){
   $v = trim($v);
   $retur[] = substr($v, 2, -2);
}
return $retur;

لذا فإن الفكرة هي الأساس للحصول على {{testto}} في مجموعة كل من حدوث {{sometext}} حيث فرعية عليه فقط 'sometext'.

شكرا =)

تحرير:

تكرار المشكلة:تنفجر لا يعمل بشكل صحيح اذا كنت بحاجة الى بعض التعابير المنطقية إذا كان ذلك ممكنا, بدلا من مجرد بيضاء.. و هل هناك أي طريقة أفضل للقيام preg_grep على سلسلة كبيرة?

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

المحلول

لا تحتاج أن تنفجر, إنشاء مؤقت مجموعة ، البقرى و غزة في وقت لاحق فقط regexp المباراة:

$html = file_get_contents($path);
preg_match_all('#{{(.*?)}}#', $html, $matches);
$array_of_texts = $matches[1];

نصائح أخرى

لا كنت ترغب فقط في استخدام:

strip_tags($v)

أولا بحيث يتم إزالة جميع علامات html ، ثم الرمز الخاص بك سوف تحصل على 'sometext' بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top