regex php لاستخراج وظائف php من ملفات التعليمات البرمجية
-
21-09-2019 - |
سؤال
أحاول إنشاء php regex لاستخراج الوظائف من رمز مصدر PHP. حتى الآن ، استخدمت Regex العودية لاستخراج كل شيء بين {} ولكن بعد ذلك يطابق أشياء مثل إذا كانت العبارات. عندما أستخدم شيئًا مثل:
preg_match_all("/(function .*\(.*\))({([^{}]+|(?R))*})/", $data, $matches);
لا يعمل عندما يكون هناك أكثر من وظيفة واحدة في الملف (ربما لأنه يستخدم جزء "الوظيفة" في العدوى أيضًا).
هل هناك أي طريقة للقيام بذلك؟
مثال ملف:
<?php
if($useless)
{
echo "i don't want this";
}
function bla($wut)
{
echo "i do want this";
}
?>
شكرًا
المحلول
regexps هي الطريقة الخاطئة للقيام بذلك. يعتبر الرمز المميز أو انعكاس
نصائح أخرى
انتقلت هنا من سؤال مكرر: PHP و Regex وخطوط جديدة
حل Regex:
$regex = '~
function #function keyword
\s+ #any number of whitespaces
(?P<function_name>.*?) #function name itself
\s* #optional white spaces
(?P<parameters>\(.*?\)) #function parameters
\s* #optional white spaces
(?P<body>\{.*?\}) #body of a function
~six';
if (preg_match_all($regex, $input, $matches)) {
print_r($matches);
}
ملاحظة كما تم اقتراحه أعلاه هو الأفضل للذهاب.
لا تنتمي إلى StackOverflow