2010-11-17 2 views
0

Мне нужна помощь для решения следующей проблемы.Извлечь подстроку из строки с использованием PHP (приложение Cake PHP)

У меня есть входной строки следующим образом: -

< поверочного класс = "notranslate"> MSGID "Default_TOP_01" </SPAN> < уш> < пролет класс = "notranslate"> < вывод,/SPAN> "дом < сильная> страница </сильный>" < уш> < пролета класс = "notranslate"> MSGID "Default_TOP_02" </SPAN > < ш> < оболочки класса = "notranslate"> вывод, </SPAN> "содержание < SPAN> в пределах </SPAN>"

Желаемый результат должен быть: -

MSGID "Default_TOP_01" \ п " вывод, домашней < сильной> страницы </STRONG>" \ п MsgID "Default_TOP_02" \ п пакетов «содержание < в пределах </span> "

Мне нужны начальные и конечные метки диапазона с классом =" notranslate "для удаления. < br> теги должны быть заменены на \ n. Любые теги жгутов в «пакетах» значение не должны быть удален, например пакеты «контент < SPAN> в пределах </SPAN>»

+0

Ваш пример дает неверно вложенные теги, исходный '' не закрыт. Всегда ли так, что есть такой исходный, незакрытый тег, может ли он меняться, или это опечатка в вашем вопросе? Могут ли быть другие случаи с несбалансированными тегами? Может ли быть случай, когда msgstr может содержать текст «' '" и как бы вы хотели справиться с этим? – deceze

+0

Я закрыл начальный тег span. Теперь Plz взглянет на quetion. – Dora

ответ

0

Первого прогона str_replace на строке, чтобы заменить любое вхождение <br> с \n, а затем полосами все теги HTML из строки с strip_tags.

<?php 
$str = '<span class="notranslate">msgid "Default_TOP_01" <br> <span class="notranslate">msgstr </span>"home <strong>page </strong>" <br> <span class="notranslate">msgid "Default_TOP_02" </span> <br> <span class="notranslate">msgstr </span>"content <span>within </span>"'; 

echo 'Original: '.$str; 
echo 'Modified: '.strip_tags(str_replace('<br>', "\n", $str));                                                     
?> 
+0

strip_tags удалил бы все теги .. но, как упоминалось в моем вопросе, я не хочу удалять теги, имеющие значение «msgstr». Пожалуйста, внимательно прочитайте нижнюю часть моего вопроса. – Dora

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