preg_grep على أكبر سلسلة
سؤال
أنا بحاجة إلى استخدام 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' بشكل صحيح.
لا تنتمي إلى StackOverflow