Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Съедает один символ
 
 автор: Петр   (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 идет без > а в теле заменяется..

   
 
 автор: cheops   (13.07.2006 в 00:54)   письмо автору
 
   для: Петр   (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>"

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования