2009-11-21 2 views
0

У меня есть следующая проблема;Проблема с php str_replace или ошибка?

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

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

Мой код;

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

Но это неудачно.

Это быстрее, чем регулярное выражение заменить и быстрее.

Любые идеи?

ответ

3

Вы оставили пространство

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

Благодарим вас за помощь – cocacola09

1

Изменить

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

в

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

Спасибо вам большое – cocacola09

1

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

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

Сформировавшись таким образом, становится очевидным, что 15-й символ строки поиска не соответствует 15-м символам искомой строки ([] против [B]).

Попробуйте удалить эти пробелы, и вы должны быть счастливы.

+0

Спасибо большое! – cocacola09

1

Вы можете использовать

$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-Ла-Батр ")
Bayou-Ла-Батр")
Bayou-Ла-Батр ")
SubStr: +3,7492098808289
Str заменить: +4,5258920192719
PREG заменить: 5,8815109729767

Смежные вопросы