Вопрос

У меня есть следующая проблема;

Вот моя строка, которую я пытаюсь удалить javascript:l(" из приведенной ниже строки:

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

Мой код таков;

$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("','',$row['1']);

Всякий раз, когда у меня возникает такая проблема, я пытаюсь отформатировать свой вызов search / replace в моноширинном редакторе, чтобы посмотреть, не выскочит ли что-нибудь

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

При таком формате становится очевидно, что 15-й символ строки поиска не соответствует 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);

Вывод этого на моей машине

Байю-Ла-Батр")
Байю-Ла-Батр")
Байю-Ла-Батр")
Подстрочный:3.7492098808289
Замена Str:4.5258920192719
Предварительная замена: 5.8815109729767

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top