Строка заменяет содержимое div - PullRequest
1 голос
/ 15 октября 2011

Что я хочу сделать:

У меня есть div с идентификатором.Всякий раз, когда встречается «>», я хочу заменить его на «>>».Я также хочу добавить префикс div к «You are here:».

Пример:

<div id="bbp-breadcrumb">Home &gt; About &gt; Contact</div>

Контекст:

Мой div содержит ссылки на крошки для bbPress, но я 'Я пытаюсь сопоставить его формат с плагином для сайта, который я использую для WordPress.Div вызывается как функция в PHP и выводится в виде HTML.

Мой вопрос:

Использую ли я PHP-JavaScript для замены символов и как мне вызывать содержимое divна первом месте?

Ответы [ 3 ]

1 голос
/ 15 октября 2011

Найдите код, который генерирует &lt;, и либо установите соответствующую опцию (breadcrumb_separator или около того), либо измените код php, чтобы изменить разделитель.

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

0 голосов
/ 15 октября 2011

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

    $the_existing_html = 'somethis before<div id="bbp-breadcrumb">Home &gt; About &gt; Contact</div>something after'; // let's say this is your curreny html.. just added some context
    echo $the_existing_html, '<hr />'; // output.. so that you can see the difference at the end 
    $pattern ='|<div(.*)bbp-breadcrumb(.*)>(.*)<\/div>|sU'; // find some text that is in a div that has "bbp-breadcrumb" somewhere in its atributes list

    $all = preg_match_all($pattern, $the_existing_html, $matches); // match that pattern

    $current_bc = $matches[3][0]; // get the text inside that div

    $new_bc = 'You are here: ' . str_replace('&gt;', '&gt;&gt;', $current_bc);// replace entity for > with the same thing repeated twice 

    $the_final_html = str_replace($current_bc, $new_bc, $the_existing_html); // replace the initial breadcrumb with the new one 
    echo $the_final_html; // output to see where we got 
0 голосов
/ 15 октября 2011

Вы можете использовать CSS, чтобы добавить текст «Вы здесь»:

#bbp-breadcrumb:before {
    content: "You are here: ";
}

Поддержка браузера:
http://www.quirksmode.org/css/beforeafter_content.html

Вы можете изменить> на >> с помощью JavaScript:

var htmlElement = document.getElementById('bbp-breadcrumb');
htmlElement.innerHTML = htmlElement.innerHTML.split('&gt;').join('&gt;&gt;').split('>').join('>>')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...