Ответ
 
Опции темы
Старый 22.03.2010, 17:18      #1
MorgaN
Firefox User
Пользователь Mozilla Firefox
 
Аватар для MorgaN
 
Регистрация: 08.02.2008
Адрес: Петрозаводск
Сообщений: 474
Вопрос php|preg_replace

Здравствуйте!
Вообщем такая вот проблемка.
Есть такая функция:
PHP код:
function HelpMenuParser($txt)
{
        
$Catsk МАССИВ С ДАННЫМИ;
    foreach (
$Catsk as $Catk)
    {
        
$StringSplit explode(','$Catk[1]);
        foreach (
$StringSplit as $StringSplits)
        {
            
$txt preg_replace"#(".$StringSplits.")#is""<text title='".$Catk[2]."' style='cursor:nw-resize'>$1</text>"$txt);
            
        }
    }
    return 
$txt;

Как сделать так, чтобы эта функция не заменяла то, что уже заменила?
Т.е. например она заменила слово 'текст' на:
Код:
<text title='тттттттт' style='cursor:nw-resize'>текст</text>
а затем заменяет эту строку повторно, и получается:
Код:
<text title='тттттттт' style='cursor:nw-resize'><text title='тттттттт' style='cursor:nw-resize'>текст</text></text>
Ну это при условии что в переменной $Catk[1] хранится 'текст,текст'.
Помогите пожалуйста...
__________________
Не забудте нажать [спасибо] , если помог
Команда Grand Lions
MorgaN вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 22.03.2010, 18:49      #2
Ringo
Местный
 
Аватар для Ringo
 
Регистрация: 08.12.2006
Сообщений: 2,870
По умолчанию

morgan,
попробуй
PHP код:
$txt preg_replace"#(".$StringSplits.")#is""<text title='".$Catk[2]."' style='cursor:nw-resize'>$1</text>"$txt1); 
Добавлено через 3 минуты
morgan, что-то у тебя в коде много неопределённых переменных =\ Показалось (:
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...

Последний раз редактировалось Ringo; 22.03.2010 в 18:50.
Ringo вне форума   Ответить с цитированием Вверх
Старый 22.03.2010, 20:44      #3
MorgaN
Firefox User
Пользователь Mozilla Firefox
 
Аватар для MorgaN
 
Регистрация: 08.02.2008
Адрес: Петрозаводск
Сообщений: 474
По умолчанию

Сообщение от Ringo Посмотреть сообщение
morgan, попробуй
Не, немного не то...
Так он заменяет один раз, а нужно чтоб заменял все совпадения, но не заменял то что было добавлено при первой замене.
__________________
Не забудте нажать [спасибо] , если помог
Команда Grand Lions
MorgaN вне форума Пол: Мужчина   Ответить с цитированием Вверх
Старый 22.03.2010, 20:58      #4
Ringo
Местный
 
Аватар для Ringo
 
Регистрация: 08.12.2006
Сообщений: 2,870
По умолчанию

morgan, ясно. Если электричество перестанет вырубать - посмотрю что да как.
Можешь скинуть примерный вид массива $Catsk чтоб условия тестирования похожи были? (:
ЗЫ. pattern же должен быть обёрнуть в слэши - \
не?

Добавлено через 6 минут
morgan, слушай, создай пустой файл,
скопипасть тцда функцию и запусти её один раз, тоже заменять дважды будет?
У тебя просто аргумент функции $txt нигде не используется и функция всё время обрабатывает одни и те же данные.
__________________
Und wie du wieder aussiehst, Löcher in der Hose und ständig dieser Lärm...
Elektrische Gitarren und immer diese Texte...

Последний раз редактировалось Ringo; 22.03.2010 в 21:01.
Ringo вне форума   Ответить с цитированием Вверх
Старый 22.03.2010, 21:20      #5
MorgaN
Firefox User
Пользователь Mozilla Firefox
 
Аватар для MorgaN
 
Регистрация: 08.02.2008
Адрес: Петрозаводск
Сообщений: 474
Сообщение

Сообщение от Ringo Посмотреть сообщение
ЗЫ. pattern же должен быть обёрнуть в слэши - \
Нет, слэшами только вроди спец символы экранируются.
Сообщение от Ringo Посмотреть сообщение
скопипасть тцда функцию и запусти её один раз, тоже заменять дважды будет?
Вообщем по функции же видно, что она разделяет ячейку массива $Catk[1] на части, отделяя каждую часть по запятой.
Массив $Catk:
Цитата:
$Catk[0] = тут хранится идентификатор id
$Catk[1] = [Рр]едактор реестра,[Рр]еестр,[Рр]еестра
$Catk[2] = Сведения о настройках операционной системы
Windows хранятся централизованно в иерархической
базе данных, называемой реестром. Чтобы
добавлять и редактировать разделы и параметры
реестра, восстанавливать реестр из резервной
копии или восстанавливать значения по умолчанию,
а также чтобы импортировать или экспортировать
разделы для ссылок или сохранения, используйте
редактор реестра.
Вызывается командой:
Пуск => выполнить => regedit.exe
поэтому получается, что два раза заменяет, т.к. в ячейке 1 есть слово которое есть в ячейке 2.

Попробуйте передать функции такой текст:
Код:
текст редактор реестра текст
__________________
Не забудте нажать [спасибо] , если помог
Команда Grand Lions
MorgaN вне форума Пол: Мужчина   Ответить с цитированием Вверх
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Обратная связь
Текущее время: 12:11. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot