![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
помогите разработать алгоритм замены всех кавычек на парные «»
я так понимаю должны соблюдаться следующие условия - если пробел--кавычка--знак, то « - если знак--кавычка--пробел, то » - если знак--кавычка--знак или пробел--кавычка--пробел, то нужно сравнить что идёт до этого.. Это ошибка, но такое возможно - исключить обработку кавычек в тегах -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Это сообщение отредактировал(а) sTa1kEr - 29.9.2009, 10:38 |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
отличная функция!!! Есть маленький нюанс.. не обрабатываются кавычки которые находятся между пробелами
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| sTa1kEr |
|
||||||||||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Действительно. К тому же заметил, что можно было еще проще шаблон записать. Подправил пост. Однако, здесь все равно не учитывается пункт
т.к. при этом пришлось бы сильно усложнить алгоритм. И потом возможна неоднозначная ситуация, когда невозможно правильно определить как должны идти кавычки, пример:
Здесь можно было бы расставить кавычки так:
и так
По этому, этот пункт может внести еще большую путаницу с кавычками. Добавлено @ 10:47 Доработал с учетом (частично) третьего пункта:
Это сообщение отредактировал(а) sTa1kEr - 29.9.2009, 10:52 |
||||||||||||
|
|||||||||||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
в общем погонял, всё работает
Не могу пока найти комбинацию, которая бы создала ошибку -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Можно еще такой вариант (с учетом различных кавычек)
Это сообщение отредактировал(а) sTa1kEr - 29.9.2009, 11:13 |
|||
|
||||
| Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
sTa1kEr, можешь описать что это делает?
Добавлено через 4 минуты и 51 секунду sTa1kEr, по-моему стало не очень.. Вот результат первой и второй
на выходе string(15) "text « dd «dd» " string(15) "text « dd »dd« " первая грамотнее Это сообщение отредактировал(а) Gold Dragon - 29.9.2009, 11:21 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Замена по регулярному выражению, с вызовом callback-функции. Однако в качестве самой callback-функции здесь выступает та-же функция в которой вызывается этот метод (магическая константа __FUNCTION__ содержит имя текущей функции), т.е. preg_replace_callback вызывает рекурсивно эту-же функцию в которой он находится, но уже с массивом в качестве параметра. Добавлено через 13 минут и 46 секунд
Ну это уже дело вкуса |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
Ну вообще-то нечётное число допускается.. например ОАО «Энская компания «Рога и Копыта»
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Я и говорю, допускается в русском языке, но не допускается в программировании.
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
ну мне для русского языка
зы можно пометить, первый вариант для русского языка, второй для программеров Добавлено через 3 минуты и 6 секунд sTa1kEr, ещё в догонку... расскажи условия регулярки.. знаний не хватает понять -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |