Способ объединить различия между двумя строками? - PullRequest
0 голосов
/ 22 января 2012

Я создал плагин для WordPress, который автоматически добавляет тег <!--more--> к вашему сообщению на основе определенных критериев, но разумно размещает этот тег в вашем сообщении. Проблема в том, что я не нашел подходящего способа борьбы с HTML-кодом. В настоящее время у меня есть проверка, чтобы увидеть, есть ли <, и если так, он находит следующий > в сообщении.

То, что я надеюсь сделать здесь, это полностью удалить html из уравнения. Мне было интересно, есть ли какая-нибудь система, например git для PHP, где я смогу сохранить версию строки в HTML-коде, а затем удалить HTML-код и сохранить версию кода в виде открытого текста в другой переменной, поместить <!--more--> отметьте текстовую версию кода, а затем сравните две версии, чтобы правильно объединить HTML-код с открытым текстом.

Я пробовал Google, я сделал около 100 часов изменений кода, и я до сих пор не нашел решения. Так что теперь я кланяюсь силе облака. Здесь есть кто-нибудь, кто может предложить решение?

1 Ответ

2 голосов
/ 22 января 2012

У меня есть только очень грубое представление о том, что вы пытаетесь реализовать, поэтому вот очень грубый способ сделать это.

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

Запустите цикл для всех персонажей вашего поста. Если вы обнаружите < игнорировать («продолжить»), что будет дальше, пока вы не найдете >, то есть, по сути, вы получите простой текст внутри цикла, вы можете выполнить все начальные подсчеты внутри этого цикла (общее число символ, количество слов и т. д.) - Запустите этот цикл еще раз и добавьте тег more к содержимому на основе начального количества, выйдя из второго цикла.

Ниже написана еще одна идея, которая намного сложнее и предполагает, что вы не сможете обойтись без простого текста.

Пусть M будет основной строкой, содержащей весь контент поста. Каждый раз, когда вы найдете <tag>, поместите его в массив, запомните расположение этого тега в M, вставьте его в другой массив.

После того, как вы поместили все теги в M в массив вместе с расположением тега, у вас останется простой текст. После того, как вы закончите, верните все теги из массива в обычный текст в зависимости от местоположения. Этот курс, конечно, нуждается в доработке, но это просто идея, которую вы можете развить.

...