2013-08-29 2 views
-1

Так что у меня есть str_replace, который ищет строку для «и» и заменяет ее & Однако, если есть слово, которое содержит буквы «и», например, «Howland», оно заменяет его Howl&.PHP str_replace "и"

Как я могу сделать так, чтобы он искал только слово и.

Это моя функция у меня есть установка:

function add_ampersand($string) { 
    $string = str_replace('and', '&', $string); 

    return $string; 
} 

Я должен отметить, что эта функция используется в URL, так что «и» будет содержать «-» рядом с обе стороны от него, который затем преобразуется в пробелы.

+1

'str_replace ('и', '&', $ строка)'? – karthikr

+0

'str_replace ('-and-', '&', $ string)' – DevlshOne

+0

На самом деле у меня такое ощущение, что вы хотите заменить одно слово '' '' 'и' ''. То, что вам понадобится объект HTML для '&', написан на другом листе бумаги. – hakre

ответ

4

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

function add_ampersand($string) { 
    $string = preg_replace('/\band\b/', '&', $string); 

    return $string; 
} 

или

function add_ampersand($string) { 
    $string = str_replace(' and ', ' & ', $string); 

    return $string; 
} 

Первый из них лучше в случае «и» рядом с концом строки или рядом с особым характером, такие как ' , , или ..

+0

Это сделало трюк, я уже пытался добавить пространство раньше, но я думаю, я забыл добавить пространство с обеих сторон от &. Благодаря! – Sygon

0

Попробуйте

function add_ampersand($string) { 
    $string = str_replace(' and ', ' & ', $string); 
    return $string; 
} 
0

Если я вас понимаю, у вас есть строки, как это: «й» или «И-» или «-и-». Самый простой способ заменить его & усилителя заключается в следующем:

function add_ampersand($string) { 
    $string = str_replace('-and', '-&', $string); 
    $string = str_replace('and-', '&-', $string); 
    $string = str_replace('-and-', '-&-', $string); 

    return $string; 
}