|
|
|
| есть маска (.*?) . Нужно чтоб в результат не попадала подстрока которая начинается и заканчивается кавычками ". Как правильно написать? | |
|
|
|
|
|
|
|
для: not detected
(27.01.2008 в 16:35)
| | Пробовал так ((?<!").*?(?!")) но чего то не работает :( | |
|
|
|
|
|
|
|
для: not detected
(27.01.2008 в 16:37)
| | Должно работать... покажите что имеете и что хотите получить на выходе. | |
|
|
|
|
|
|
|
для: kasmanaft
(27.01.2008 в 19:39)
| | имеем [a href=url_линка]название_линка[/a] .
Нужно заменить на <a href="url_линка">название линка</a>.
Замена должна происходить только в том случаем если href в первом случаем ([а href]...[/а]) не начинается и не заканчивается кавычками.
Вот я делаю так
$str=preg_replace('/\[a href=((?<!").*?(?!"))\](.*?)\[\/a\]/','<a href="\\1">\\2</a>',$str);
И всё равно происходит замена, и кавычки захватываются подмаской. | |
|
|
|
|
|
|
|
для: not detected
(28.01.2008 в 05:47)
| | Ага.. попробуйте вот так: ((?!").*?(?<!")) | |
|
|
|
|
|
|
|
для: kasmanaft
(28.01.2008 в 07:21)
| | >Ага.. попробуйте вот так: ((?!").*?(?<!"))
Пробовал и так
$str=preg_replace('/\[a href=((?!").*?(?<!"))\](.*?)\[\/a\]/','<a href="\\1">\\2</a>',$str);
| . Все равно заменяется если есть кавычки :(
Пробовал также через альтернативы:
\w.*?|\..*?|\/.*?
Работает только если строка начинается с буквы, точки или слеШа (мне в принципе это и надо). Но нужно чтоб ещё в конце не было кавычки. | |
|
|
|
|
|
|
|
для: not detected
(28.01.2008 в 07:37)
| | Хм...
<?php
$str = "имеем [a href=url_линка]название_линка[/a] [a href=\"url_линка\"]название_линка[/a]
[a href=\"url_линка]название_линка[/a] [a href=url_линка\"]название_линка[/a] ";
echo preg_replace('/\[a href=((?!").*?(?<!"))\](.*?)\[\/a\]/','<a href="\\1">\\2</a>',$str);
?>
|
PS а в чем смысл этого всего? Может быть сделать вот так:
/\[a href="?(.*?)"?\](.*?)\[\/a\]/
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(28.01.2008 в 07:53)
| | >PS а в чем смысл этого всего?
-смысл?! Делаю теги :)
>Может быть сделать вот так:
/\[a href="?(.*?)"?\](.*?)\[\/a\]/
|
- а про это я даже и не подумал:) . Спасибо.
И все равно интересно почему у меня на работают утверждения. | |
|
|
|
|
|
|
|
для: not detected
(28.01.2008 в 08:25)
| | Ну, если интересно, давайте разберемся. Тот код, что я привел чуть выше, у вас работает?
Если нет - тода не знаю в чем дело :).
Если работает, дайте пример, где не работает...
Можно попробовать вместо ((?!").*?(?<!")) написать ((?!")[^\]]*?(?<!")). Может быть, проблема в этом. | |
|
|
|
|
|
|
|
для: kasmanaft
(28.01.2008 в 08:40)
| | >Ну, если интересно, давайте разберемся. Тот код, что я привел чуть выше, у вас работает?
Создал отдельный файл и закинул туда этот код, и работает:) . Заменилась только первая ссылка.
Но почему то в другом месте, где собственно и будет применяться данная функция, заменяются все ссылки.
//Кажется понял в чем глюк:) . У меня сначала идёт фильтрация и потом замена тегов. В результате фильтрации кавычки заменяются на html эквиваленты (функция htmlspecialchars ). Щас попробую поправить :) | |
|
|
|
|
|
|
|
для: not detected
(28.01.2008 в 09:06)
| | Угу, теперь все работает
/\[a href=((?!"|"|\'|').*?(?<!"|"|\'|'))\](.*?)\[\/a\]/
|
Спасибо:) . | |
|
|
|