2011-02-10 4 views
1

У меня есть строка, сказать:Первый экземпляр в строке

www.google.com/tomato.mdm 

Мне нужно заменить помидор с tomaton (добавить п к ней). Мой метод - найти. затем замените его на n. , Это не сработало. Помидор может быть много разных слов, поэтому я не могу просто найти это либо ...

Есть ли у них любой способ решить эту проблему?

Я думал только о замене его в первом экземпляре с конца, но не могу найти функцию для этого в php manuel.

ответ

3

Я хотел бы подойти к нему так:

$string = "www.google.com/tomato.mdm"; 
$lastDot = strrpos($string, '.'); 
$newString = substr($string, 0, $lastDot) . 'n.' . substr($string, $lastDot + 1); 

Я использую strrpos найти последнее вхождение «» в строке. Затем я разбил строку на две части (используя substr): все до последней точки и все после нее. Затем я вставляю «n». между этими двумя частями, что должно дать желаемый результат.

Решение с использованием регулярного выражения будет следующее:

$string = "www.google.com/tomato.mdm"; 
$newString = preg_replace('/(.*?)(\.[^\.]*)$/', '\1n\2', $string); 

См preg_replace и a regex reference для получения дополнительной информации.

+0

Это, кажется, заменить о. с n. а не о. с включенным. нужен первый -1, чтобы не быть их, работает! – David19801

+0

Да, я ошибался в части «$ lastDot-1». Но на самом деле, учитывая решение, вы должны хотя бы немного отладить его, не так ли? Это не платформа для написания кода ... – fresskoma

+0

Есть ли шанс для быстрого объяснения кода reg ex? особенно \ 1n \ 2 я никогда не видел этого раньше ... – David19801

0

Вы должны использовать Regex, чтобы сделать это

$newStr = preg_replace("#^(www.google.com/[a-zA-z]*)#", '$1n', "www.google.com/tomato.mdm"); 
+0

Если бы я хотел, чтобы он работал для любого .com, как бы я установил его для распознавания asdjkhasd.com? Я знаю, что это нужно где-то в начале, как ~^(. Com/[и т. Д., Но можете ли вы сказать мне правильный способ написать это пожалуйста? – David19801

+0

Я мог бы провести всю ночь для регулярного выражения, но мне нужно мыть мои волосы. Я оставлю вас с http://regex.powertoy.org/ –

+0

Прохладный сайт, спасибо! – David19801

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