2013-05-02 3 views
0

У меня есть следующиеУдаление части результата

$html .= '<option value="' . $option['id'] . '"' . $selected . '>' . JText::_($option['name']) . '</option>'; 

который отображает данные из БД и заполняющий раскрывающийся список.

eg data 
My name is John 
My name is Jim 
My name is Jason 
My name is Julie 

Что бы я хотел сделать, это удалить «Мое имя» из каждого результата, чтобы список был всего лишь именами.

Я попытался следующий

JText::_(substr($option['name'],strlen('my name is '))) . '</option>'; 

который работает на deletingg первые 11 символов, однако, некоторые записи в списке не имеют «Мое имя», и таким образом, это удаляет имя тоже.

Я не могу найти что-то, что позволяет мне определить выражение, которое я хочу удалить.

Любые идеи?

Благодаря

+0

Вы всегда можете предположить, что это последнее слово в строке, которое содержит имя, которое вы хотите заменить? Или это может быть, например, Меня зовут Джон Доу, и вы хотите отобразить «John Doe»? –

ответ

0

Использование str_replace:

$html .= '<option value="' . $option['id'] . '"' . $selected . '>' . 
    JText::_(str_replace("My name is ", "", $option['name'])) . 
    '</option>'; 

Это заменяет все вхождения "Мое имя" пустой строкой. Если строки поиска нет, это ничего не сделает.

+1

Это не решает случай, когда OP говорит, что запись НЕ всегда содержит «Мое имя» –

+0

Спасибо @JensWegar, теперь это так. – likeitlikeit

0

Предполагая, что имя принести всегда одно слово, и всегда в конце строки, то следующий должен возвращать имя только:

JText::_(substr($option['name'], strrpos($option['name'], ' '))). '</option>'; 

Что мы делаем, просто поиск последнего вхождения пространства символ, используя strrpos, и возвращать все после этого, используя substr.

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