استبدال النص بين import و n
-
19-09-2019 - |
سؤال
أنا استخدم PHP.
أنا أعمل في وسيلة لإعادة تلقائيا جميع ملفات CSS الخاصة بي تلقائيا. قمت تلقائيا بتحميل ملفات CSS ثم يحفظها على واحد أكبر، للتحميل.
في التثبيت المحلي لدي بعض خطوط Apimport التي يجب إزالتها.
تبدو هكذا:
@import url('css/reset.css');
@import url('css/grid.css');
@import url('css/default.css');
@import url('css/header.css');
@import url('css/main.css');
@import url('css/sidebar.css');
@import url('css/footer.css');
body { font: normal 0.75em/1.5em Verdana; color: #333; }
إذا كان النمط أعلاه ضمن سلسلة، كيف يمكنني أن أفضل طريقة استبدال خطوط الاستيراد @ مع preg_replace أو أفضل؟ سيكون من الجيد عدم ترك فجوة بيضاء.
المحلول
هذا يجب التعامل معها عبر Regex:
preg_replace('/\s*@import.*;\s*/iU', '', $text);
نصائح أخرى
يمكنك بسهولة تكرار أكثر من كل سطر ثم تحديد ما إذا كان يبدأ بتضمين @.
$handle = @fopen('/path/to/file.css', 'r');
if ($handle) {
while (!feof($handle)) {
$line = fgets($handle, 4096);
if (strpos($line, '@import') !== false) {
// @import found, skip over line
continue;
}
echo $line;
}
fclose($handle);
}
أو إذا كنت ترغب في تخزين الملف في صفيف مقدما:
$lines = file('/path/to/file.css');
foreach ($lines as $num => $line) {
if (strpos($line, '@import') !== false) {
// @import found, skip over line
continue;
}
}
str_replace ("@ استيراد"، ''، $ str)؛
قد يكون من الأسهل العثور على imports باستخدام preg_match، ثم استبدالها باستخدام str_replace
$str = "<<css data>>";
while (preg_match("/@import\s+url\('([^']+)'\);\s+/", $str, $matches)) {
$url = $matches[1];
$text = file_get_contents($url); // or some other way of reading that url
$str = str_replace($matches[0], $text, $str);
}
بقدر ما تجريد كل خطوط جميع الخطوط
preg_replace("/@import[^;]+;\s+/g", "", $str);
يجب القيام بهذه المهمة ...
لا تنتمي إلى StackOverflow