|
автор: Петр (12.07.2006 в 23:18) |
|
| Товарищи, есть такая задача: неоюходимо заменить все ссылки на странице на вид href="javascript:w_p_n('ссылка')" Для этого написал две функции замены:
$s = preg_replace("/href=[\"\'\s]([^\"\'\s].*?)[\s\"\'\>]/i", "href=\"javascript:w_p_n('$1');\"", $s);
Для заковыченных ссылок
$s = preg_replace("/href[\s=]\s*([^\"\'\s>=].*?)[\s>]/i", "href=\"javascript:w_p_n('$1');\"", $s);
Для незаковыченных ссылок
Проблема такая: вторая функция верно выделяет кусок ссылки, но если ссылка заканчиается символом ">" он автоматически удаляется, а следовательно нарушается логика страницы. Кто сможет помочь?
Вот пример выводимый функцией 2 :
Array
(
[0] => Array
(
[0] => href=/info.php?sports=1&top=1&id=73>
[1] => href=/info.php?sports=4&top=1&id=68>
[2] => href=/info.php?sports=4&top=1&id=66>
[3] => href=/news.php#37>
[4] => href=/news.php#35>
[5] => href=/news.php#36>
[6] => href=/guestbook.php#11>
[7] => href=/guestbook.php#10>
[8] => href=/guestbook.php#8>
)
[1] => Array
(
[0] => /info.php?sports=1&top=1&id=73
[1] => /info.php?sports=4&top=1&id=68
[2] => /info.php?sports=4&top=1&id=66
[3] => /news.php#37
[4] => /news.php#35
[5] => /news.php#36
[6] => /guestbook.php#11
[7] => /guestbook.php#10
[8] => /guestbook.php#8
)
)
|
Вроде бы $1 идет без > а в теле заменяется.. | |
|
|
|
|
|
|
|
для: Петр
(12.07.2006 в 23:18)
| | А вы напишите вместо
<?php
$s = preg_replace("/href[\s=]\s*([^\"\'\s>=].*?)[\s>]/i", "href=\"javascript:w_p_n('$1');\"", $s);
?>
|
пишите
<?php
$s = preg_replace("/href[\s=]\s*([^\"\'\s>=].*?[\s>])/i", "href=\"javascript:w_p_n('$1');\"", $s);
?>
|
| |
|
|
|
|
автор: стасмус (13.07.2006 в 09:03) |
|
|
для: cheops
(13.07.2006 в 00:54)
| | Не подходит. Таким образом символ > будет внутри javascript:w_p_n(""), а должен снаружи. Решене я нашел, но это не подход - заменил в тексте все символы ">" "\s>" | |
|
|
|