2010-10-29 2 views
0

Я ищу способ заменить строку в php, которая точно соответствует теме.Точная замена строки в php

Например, я получил файл с именем «привет-world.txt» имеет три линии:

'http://www.example.com/' 
'http://www.example.com/category/' 
'http://www.example.com/tag/name/' 

и мне нужно заменить 'http://www.example.com/' с 'http://www.example2.com'

$string=file_get_contents('hello-world.txt'); 
$string=str_replace('http://www.example.com/','http://www.example2.com',$string); 
echo $string; 

Я буду получать результат аналогичен этому:

Но мне действительно нужно что-то вроде этого:

'http://www.example2.com/' 
'http://www.example.com/category/' 
'http://www.example.com/tag/name/' 

Пожалуйста, помогите !!!!

+0

Как строки разделены? – Jason

+0

Я протестировал код, который вы опубликовали, и, похоже, он работает нормально. Единственная проблема, с которой я столкнулся, - это то, что вы оставили в своем втором аргументе str_replace, который сделает вывод: http://www.example2.com http: //www.example2.comcategory/ http: // www .example2.comtag/name/ – OmnipotentEntity

+0

Хм ... кажется, что текст был отредактирован несколько. Некоторое разъяснение, пожалуйста, нужно ли OP заменить только первое значение, как оно говорит в настоящее время, или это только замена первого значения, и он нуждается в их замене, поскольку я изначально помню, как он говорил? – OmnipotentEntity

ответ

2

Вы можете использовать preg_replace с m модификатором как:

$string=preg_replace('~^http://www\.example\.com/$~m','http://www.example2.com',$string); 

Code In Action

+0

Спасибо за решение, которое отлично поработало. – sreejith

+0

Спасибо вам большое :) – yanike

0

Сначала проверьте, является ли текущая строка тем, что вы ищете. Если нет, просто верните его обратно.

0

Либо $string=str_replace("'http://www.example.com/'", "'http://www.example2.com'", $string);, так как в вашем примере вы одинарные кавычки каждой строки или использовать preg_replace так:

$string=preg_replace('/^http:\/\/www\.example\.com\/$/', 'http://www.example2.com/', $string); 

... если эти одиночные кавычки не должны быть там. $ В конце регулярного выражения означает конец строки, а^означает начало строки. Периоды и/должны быть экранированы, следовательно, \. и \/

Я еще не протестировал этот код. Вот ссылка на preg_replace() http://php.net/manual/en/function.preg-replace.php