Ошибка в RegExp — php

Уже 3 час ломаю голову в чем дело. Терпение на исходе. Надеюсь на чью-то помощь.
Есть ссылки

<a href="#" onClick=«NewWin=window.open('../jumpMunis.asp','jump','scrollbars=1')»>View</a>


и такая
<a href="../Parks/Parks.asp">Check out Parks</a> в общем тексте

есть регулярка
preg_match_all('/<a.*?href=["\'](.*?)["\'].*?(?:\.open\(\'(.*?)\')?.*?>(.+?)<\/a>/i',$url_open['content'],$arLinks,PREG_SET_ORDER);

проблема в том что если после (?:\.open\(\'(.*?)\') есть знак вопроса то в $arLinks пихается вот это
[10] => Array
(
[0] => <a href="#" onClick="NewWin=window.open('../jumpMunis.asp','jump','scrollbars=1')">View</a>
[1] => #
[2] =>
[3] => View
)

[11] => Array
(
[0] => <a href="../ParksAndRec/ParksAndRec.asp">Check out Parks</a>
[1] => ../Parks/Parks.asp
[2] =>
[3] => Check out Parks
)

где в 10: 2 ключе должно быть ../jumpMunis.asp но оно почему-то туда не лезет хоть? значит 0 или 1 и если есть тогда добавляет в match(это не ??)

при этом если убрать знак вопроса после (?:\.open\(\'(.*?)\') то находится вот так
[0] => Array
(
[0] => <a href="#" onClick="NewWin=window.open('../jumpMunis.asp','jump','scrollbars=1')">View</a>
[1] => #
[2] => ../jumpMunis.asp
[3] => View
)

при этом находятся только где есть строка open(… а ведь ее может и не быть.

Как можно решить данную проблему. Может глаза уже замылились и не видят очевидно.
Буду рад помощи.

UPD. Спасибо за минусы в карму. Видно вопрос мой не столько высокотехнологичен для юзеров хабра. Хотя это в духе Хабра.
  • Вопрос задан
  • 2600 просмотров
Решения вопроса 1
Вы бы написали что вам в итоге надо, а то разбираться в ваших регулярках сложнее, чем написать с нуля или предожить другое более простое решение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
conf
@conf
Ruby developer
Сделайте 2 регулярки, одну на onclick, а другую на обычный href.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы