не затрагивая в ней ссылки и ссылки любого вида урезать до:
<a href="href.value">Link</a>
В голове вертится только preg_replace, но с регулярными у меня проблема и времени нет - задача срочная.
Буду благодарен за решение.
Спустя 2 минуты, 55 секунд (5.09.2007 - 10:47) vasa_c написал(а):
Как незатрагивая? Что значит ссылки любого вида урезать до? Нужно ли затрагивать содержимое ссылок?
Приведите пример исходного и конечного текстов.
Приведите пример исходного и конечного текстов.
Спустя 2 часа, 28 минут, 25 секунд (5.09.2007 - 13:15) Секстурист написал(а):
Цитата(vasa_c @ 5.9.2007, 11:47) [snapback]26808[/snapback]
Как незатрагивая?
Т.е оставить ссылку HTML-кодом (не заменять её на мнемоники).
Цитата(vasa_c @ 5.9.2007, 11:47) [snapback]26808[/snapback]
Что значит ссылки любого вида урезать до?
Значит оставить у ссылки только атрибут "href", все остальные атрибуты вырезать (если они есть).
Цитата(vasa_c @ 5.9.2007, 11:47) [snapback]26808[/snapback]
Нужно ли затрагивать содержимое ссылок?
Если внутри ссылки есть теги, то их нужно заменить на мнемоники.
Цитата(vasa_c @ 5.9.2007, 11:47) [snapback]26808[/snapback]
Приведите пример исходного и конечного текстов.
До:
Код
< b > text < /b >
<a href="page.htm" style="font-weight: bold"> Ссылка </a>
<a style="font-weight: bold" href="page.htm"> Ссылка 2 </a>
<a href="page.htm" style="font-weight: bold"> Ссылка </a>
<a style="font-weight: bold" href="page.htm"> Ссылка 2 </a>
После:
Код
< b > text < /b >
<a href="page.htm">Ссылка</a>
<a href="page.htm">Ссылка 2</a>
<a href="page.htm">Ссылка</a>
<a href="page.htm">Ссылка 2</a>
Спасибо.
Спустя 7 минут, 18 секунд (5.09.2007 - 13:22) Секстурист написал(а):
В общем, пользователь может вводить текст в форму, любой HTML который он введёт будет отображаться как обычный текст, кроме ссылок, ссылки будут отображаться как HTML-ссылки. Это мне и нужно решить...
Спустя 1 час, 13 минут, 57 секунд (5.09.2007 - 14:36) vasa_c написал(а):
Первое, что на ум пришло:
Код
$exp = explode('<', $code);
$ret .= array_shift($exp);
foreach ($exp as $el) {
$el = explode('>', $el);
if (preg_match('~^a\s.*?href\s*=\s*(("([^"]*)")|(\'([^\']*)\')|(\S*))~is', $el[0], $matches)) {
if (!empty($matches[2])) {
$href = $matches[3];
} elseif (!empty($matches[4])) {
$href = $matches[5];
} else {
$href = $matches[6];
}
if (preg_match('~^java script:~i', $href)) {
$href = '#';
}
$ret .= '<a href="'.$href.'">';
} elseif (preg_match('~^/a\s*$~is', $el[0])) {
$ret .= '</a>';
} else {
$ret .= '<'.htmlSpecialChars($el[0]).'>';
}
$ret .= (isSet($el[1])) ? htmlSpecialChars($el[1]) : '';
}
$ret .= array_shift($exp);
foreach ($exp as $el) {
$el = explode('>', $el);
if (preg_match('~^a\s.*?href\s*=\s*(("([^"]*)")|(\'([^\']*)\')|(\S*))~is', $el[0], $matches)) {
if (!empty($matches[2])) {
$href = $matches[3];
} elseif (!empty($matches[4])) {
$href = $matches[5];
} else {
$href = $matches[6];
}
if (preg_match('~^java script:~i', $href)) {
$href = '#';
}
$ret .= '<a href="'.$href.'">';
} elseif (preg_match('~^/a\s*$~is', $el[0])) {
$ret .= '</a>';
} else {
$ret .= '<'.htmlSpecialChars($el[0]).'>';
}
$ret .= (isSet($el[1])) ? htmlSpecialChars($el[1]) : '';
}
Спустя 19 часов, 49 минут, 53 секунды (6.09.2007 - 10:26) Секстурист написал(а):
vasa_c, спасибо большое! работает отлично
_____________