Помощник
|
regexp |
unnormal
|
Сообщение
#1
|
||
|
|
||
|
|||
alexflasher |
8.9.2010, 1:02;
Ответить: alexflasher
Сообщение
#2
|
|
объясните по-подробнее на примере, имеется такой-то текст, в нем необходимо изменить то-то на то-то. Лично я не понял, что требуется и что имеется.
P.S: Что-то я подзабыл что означает #, а гуглить - лень. Может вы напомните? ) |
|
|
Arks |
8.9.2010, 9:18;
Ответить: Arks
Сообщение
#3
|
|
распишите условия отдельно т.к. с ИЛИ использовать не получится(например если вам надо чтобы action="" не заменяло а src="" заменяло сами подумайте), для action соответственно будет квантификатор (.+) для href условие в начале ^javascript как-то так...
|
|
|
unnormal
|
Сообщение
#4
|
|
объясните по-подробнее на примере, имеется такой-то текст, в нем необходимо изменить то-то на то-то. Лично я не понял, что требуется и что имеется. P.S: Что-то я подзабыл что означает #, а гуглить - лень. Может вы напомните? ) Если скрипт находиться в подкаталоге, то изменить все ссылки из буфера. Чтобы <a href="/section/"> менялись на <a href="/subdir/section/">, но не изменять action="" и href="javascript:.... |
|
|
Mulder_hb |
8.9.2010, 14:01;
Ответить: Mulder_hb
Сообщение
#5
|
|
'/(href|src|action)="([^javascipt])+"/is' Как то так. Возможно порядок скобок не так стоит или скобки тут нужны/не нужны. Проверить возможности нет. Смысл в том, что вам нужно изменить все непустые ссылки и все ссылки, где нет слова javascript. Шаблон "непустые" обеспечивает символ '+', т.е. в ссылке должен быть минимум один символ. Ну а [^javascipt] - это отрицательный класс, т.е. в скобках должно находится что-угодно, кроме слова javascript. |
|
|
alexflasher |
8.9.2010, 15:11;
Ответить: alexflasher
Сообщение
#6
|
|
|
Ну а [^javascipt] - это отрицательный класс, т.е. в скобках должно находится что-угодно, кроме слова javascript. [^javascipt] - это отрицательный класс, т.е. в скобках будет находится что-угодно, кроме символов j,a,v, s, c, r, i, p или t. ([^javascipt])+ конечно исключит слово javascript, но оно также исключит слова vasa, spirt и многие другие. Я предложу очень простое решение. Как сказал Mulder, нужно изменить все непустые ссылки и все ссылки, где нет слова javascript. Я бы дополнил так: нужно изменить все непустые ссылки, не абсолютные ссылки (т.е. http://site.com исключить) и все ссылки, где нет слова javascript: (именно с двоеточием). Что отличает название каталога от javascript: и http://site.com? Двоеточие, насколько мне известно, оно недопустимо в каталогах. Тогда получаем это: $string = "href=\"sometext/\">"; \w отбросит ссылки с двоеточиями.$sub = "../sub"; $pattern = "/(href|src)=\"(\/?\w+?\/?\">)/i"; $replacement = "$1=\"" . $sub . "$2"; echo preg_replace($pattern, $replacement, $string); Если же двоеточия не внушают вам доверия, то можно привязаться к слэшам: $string = "href=\"/dfsf/\">"; $sub = "../sub"; $pattern = "/(href|src)=\"(\/.+?\/\">)/i"; $replacement = "$1=\"" . $sub . "$2"; echo preg_replace($pattern, $replacement, $string);
|
|
|
||
|
Текстовая версия | Сейчас: 29.3.2024, 18:18 |