Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить закрывающийся тег без открывающего, <a href="#">text</a></noindex> 
:(
    Опции темы
Master_
  Дата 1.2.2010, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Как бы сделать такое? 
<a href="#" target="_blank">text text</a></noindex>
Удалить лишний закрывающий ноиндекс из ссылок?

Можно конечно str_replace, но есть ссылки, в которых <noindex> и открывается и закрывается и их трогать не надо.

Это сообщение отредактировал(а) Master_ - 1.2.2010, 00:03
PM   Вверх
bars80080
Дата 1.2.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



искать в цикле позиции всех <noindex>, а затем и </noindex>, перебрать полученные массивы позиций и к примеру прибавлять к переменной $var = 0; +1 каждый раз когда <noindex> и -1 когда </noindex>. послекаждого -1 смотреть не получилось $var - отрицательным. если да, то вырезать с этой позиции </noindex>

ну, конечно надо будет усложнить, так как такой текст <noindex>text <noindex> тоже ошибочный
PM MAIL WWW   Вверх
Master_
Дата 1.2.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

Репутация: нет
Всего: нет



Уф как. Неужели только таким извратом делать? Регулярками не обойтись?
PM   Вверх
NLspieler
Дата 1.2.2010, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Долго думал, как можно решить эту задачу используя одну только регулярку и функцию preg_replace.
Прочитал несколько мануалов, но так и не нашел, 
как написать в регулярке отсутствие некой подстроки на определенном месте.

Может быть такой возможности и не существует.

Короче, написал функцию, которая более или менее извращенским методом выполняет задачу. 
Смысл в том, что сперва находятся нормальные ссылки с правильным noindex-ом. 
Потом эти ссылки заменяются на специальные текстовые метки. Потом при помощи str_replace удаляются оставшиеся, не нужные
</noindex> - ы, 
после чего текстовые метки опять заменяются на нормальные ссылки.

Код

<?php

$text = '

<a href="#" target="_blank">link1</a></noindex>

<noindex><a href="#" target="_blank"><p>link2</p></a></noindex>
<noindex><a href="#" target="_blank"><p>link4</p></a></noindex>
<a href="#" target="_blank"><span>link3</span></a></noindex>
' ;

echo del_noindex ($text) ;


function del_noindex ($text)
{
    //Найти ссылки с правильным noindex
    preg_match_all ('/<noindex><a.+\/a><\/noindex>/' , $text , $matches) ; 

    //Заменить правильные ссылки на промежуточные текстовые метки
    foreach ($matches[0] as $key => $value) 
    {
        $text = str_replace ($value , '#_buff_' . $key .'_#'  , $text) ;
    }
    //Удалить оставшиеся теги </noindex>
    $text = str_replace ('</noindex>' , '' , $text) ; 
    //Заменить текстовые метки на соответствующие ссылки
    foreach ($matches[0] as $key => $value) 
    {
        $text = str_replace ('#_buff_' . $key .'_#' , $value  , $text) ;
    }
    return $text ;
}
?>


 

Это сообщение отредактировал(а) NLspieler - 1.2.2010, 19:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.