Мне нужно заменить некоторые части текста, например:
"I like this car, but that car is good"
Допустим, мне нужно заменить «эту машину» на
"<u>this car</u>".
что не проблема
str_replace('this car','<u>this car</u>',$line)
Это заменит все совпадения.
Теперь мне нужно заменить одну «машину», которая уже не подчеркнута, на
<b>car</b>
и вот где я стек.
так что происходит, я делаю 1-ю замену и получаю текст:
"I like <u>this car</u>, but that car is good"
если я сделаю
str_replace('car','<b>car</b>',$line)
я закончу с этим:
"I like <u>this <b>car<b></u>, but that <b>car</b> is good"
что не есть хорошо, т.к. 1-й матч уже подчеркнут.
Пожалуйста, предложите
Нет, мне нужен настоящий html






Вы можете использовать strtr для этого задания, так как оно сначала заменит более длинные совпадения, а затем более короткие, игнорируя все, что уже было заменено. Например:
$string = "I like this car, but that car is good";
echo strtr($string, array('this car' => '<u>this car</u>', 'car' => '<b>car</b>'));
Выход:
I like <u>this car</u>, but that <b>car</b> is good
Спасибо! Как теперь закрыть этот вопрос? знак равно
@Boris, вы можете принять ответ, щелкнув галочку под стрелками вверх / вниз рядом с вопросом. См. stackoverflow.com/help/someone-answers
попробуй это :
str_replace('this car','<u>this <b>car</b></u>',$line)
Это не совсем то решение, которое вам нужно, но вы всегда можете использовать CSS, чтобы убрать жирным шрифт с подчеркнутого тега
<b>~ul b { font-weight: normal; }