سؤال

لدي القضية التالية ؛

ها هي خيطي الذي أحاول إزالته javascript:l(" من السلسلة أدناه:

javascript:l("Bayou-La-Batre");

الكود الخاص بي هو ؛

$q_string = str_replace('javascript:l(" ','',$row['1']);

لكنه فشل.

هذا أسرع من Regex استبدال وأسرع.

أيه أفكار؟

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

المحلول

تركت مساحة

$q_string = str_replace('javascript:l("','',$row['1']);

نصائح أخرى

يتغيرون

$q_string = str_replace('javascript:l(" ','',$row['1']);

ل

$q_string = str_replace('javascript:l("','',$row['1']);

كلما واجهت هذا النوع من المشكلات ، أحاول تنسيق مكالمة البحث/الاستبدال في محرر أحادي لمعرفة ما إذا كان أي شيء يخرج

$q_string = str_replace('javascript:l(" ', '', 
                        'javascript:l("Bayou-La-Batre")';

من هذا القبيل ، يصبح من الواضح أن الحرف الخامس عشر لسلسلة البحث لا يتطابق مع الأحرف 15 من السلسلة التي يتم تفتيشها ([] مقابل [B]).

حاول إزالة تلك المسافة البيضاء ويجب أن تكون سعيدًا.

يمكنك استخدام

$q_string = substr($row['1'], 14);

للحصول على نفس النتائج مع بعض زيادة السرعة. لقد اختبرت سرعات من ثلاث وظائف حتى تتمكن من معرفة كيفية مقارنة السرعة.

$string = 'javascript:l("Bayou-La-Batre")';

$str_replace = function($string) {
    return str_replace('javascript:l("', '', $string);
};

print $str_replace($string) . "\n";

$substr = function($string) {
    return substr($string, 14);
};

print $substr($string) . "\n";

$preg_replace = function($string) {
    return preg_replace('/^[a-z:\(]+"/', '', $string);
};

print $preg_replace($string) . "\n";

function measure($function, $string) {
    $start = microtime(true);
    for($i = 0; $i < 1000000; $i++) {
        $function($string);        
    }
    return microtime(true) - $start;
}

print 'Substr: ' . measure($substr, $string) . "\n";
print 'Str replace:' . measure($str_replace, $string) . "\n";
print 'Preg replace:' . measure($preg_replace, $string);

إخراج هذا على الجهاز الخاص بي

Bayou-la-batre ")
Bayou-la-batre ")
Bayou-la-batre ")
Substr: 3.7492098808289
STR استبدال: 4.5258920192719
Preg استبدال: 5.8815109729767

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