получается при каждой итерации исходный массив уменьшается на 1 элемент, и последующая итерация удаляет не тот элемент, можно это как нибудь реализовать, чтобы все верно отрабатывало?
Ребят помогите разбить сроку на элементы, т.е. каждую переменную или знак операции занести в массив, по учебе надо)
строка вида: 6: р1 = аав4-443-ы5 * sin(ап5в)+ 34 & ва3п / в232в -33 + ф34 | фв+ cos(23)
Пробелы могут быть, могут не быть между операторами и переменными.
Операторы: -, +, *, /, ! - "отрицание", & - "и", | - "или".
Переменная набор букв и цифр: кириллица и 8ая система счи-я.
preg_match_all("/[а-яА-Я0-7]+/", $tStr, $array_tmp);, так отрабатывает, а когда добавил знаки действий:
preg_match_all("/[а-яА-Я0-7]+|[!*+-&\| \/] /", $tStr, $array_tmp); то не отрабатывает и вылетает "варнинг"..(
Ребят помогите реализовать рекурсию в данной функции, функция удаляет пробелы в строке (заменяет "__" на "_", стандартные заменяют тока в начале и в конце):
Я так и думал, что чет с кодировкой, но как мне сделать чтобы "адресация" так сказать было нормальная символ шел за символ, а не за два... прост мне придется дальше не тока копировать, но другие операции производить...запутаюсь..
Проблема в следующем, при попытке копирования части строки с использованием substr, мне надо указывать двойное количество символов которое я хочу скопировать т.е. например я хочу скопировать слово "начало" то мне надо указать 12, а не 6... почему так? не когда раньше не сталкивался с такой проблемой.
причем если указываю 11 то получается:
_____начало ____
_____начал�____
если 10, то:
_____начало ____
_____начал____
9ть:
_____начало ____
_____нача�____
и тд...
если бы мне необходимо просто скопировать это тока в данном случае, то я бы указал 12 и не парился, но мне придется дальше работать с текстом, а такое нарушение "адресности" не позволительно(((
з.ы. это домашняя работа по одному из предметов в ВУЗе, не буду вдаваться в подробности задания
спасибо DlTA, всё заработало
$content = preg_replace('/(?<=href=\")({$tmp})/i',"${0}$linkName", $content); (Добавление)
OrmaJever пишет:
Gray314 пишет:
данной переменной...
это не переменая! Такого синтаксиса не существует. Переменая - $linkName, а всё что перед это непонятно что...
извини немного не так выразился $linkName - да это моя переменная для замены, а ${0} - результат работы функции, содержится найденная строка целиком.., то что я буду заменять на $linkName.
preg_replace
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_replace -- Выполняет поиск и замену по регулярному выражению
Описание
Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
Replacement может содержать ссылки вида \\n либо (начиная с PHP 4.0.4) $n, причем последний вариант предпочтительней. Каждая такая ссылка, будет заменена на подстроку, соответствующую n'нной заключенной в круглые скобки подмаске. n может принимать значения от 0 до 99, причем ссылка \\0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы.
При использовании замены по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра. В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой следует цифра 1, запишется как \\11, что будет интерпретировано как ссылка на одиннадцатую подмаску. Это недоразумение можно устранить, если воспользоваться конструкцией \${1}1, указывающей на изолированную ссылку на первую подмаску, и следующую за ней цифру 1.
Ребят подскажите как правильно передать переменную в регулярное выражение:
$content = preg_replace('/(?<=href=\")('.$tmp.')/i',"${0}$linkName", $content,1);
в переменной информация с массива:
[0] => test_2.html
[1] => /test_3.html
[2] => test_4.html
[3] => http://google[dot]ru
[4] => test_4_4.html
или можно сразу передать массив, указав текущий элемент...
з.ы. пробывал и через переменную и ч/з массив в итоге ошибка:
Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in ...
ну мне надо было не только буквы и цифры, но и некоторые символы которые встречаются в ссылках..., другого варианта не нашел)))
з.ы. я тока начал использовать регулярки)