идентификатор preg_match в URL - PullRequest
0 голосов
/ 14 июля 2011

Редактировать: Извините, я не очень ясно с моим первым постом.Хорошо, у меня есть текст, хранящийся в базе данных, я хотел бы обработать его и найти любые ссылки на продукты на моем сайте и превратить их в необычную ссылку.Ниже 2 ссылки и мой текущий опыт.Вторая ссылка (Link2) работает должным образом и передает значение 21 для detailsLink (). Моя проблема заключается в том, что Link1 передает значение 2 в detailsLink (), а не 21, как ожидалось.Я хочу полностью игнорировать URL-адрес, так как detailsLink () воссоздает ссылку с рейтингом продукта / cat и т. Д. Он также должен работать по ссылкам http или https.

Link1: http://192.168.2.22/dev/details.php?id=21 Link2: http://192.168.2.22/dev/details.php?id=21&module=info#Desc

$s = preg_replace("%(?<![=\]\'\"\w])https?://[^<>\s\'\",]*$ADDRESS\/details\.php\?id=([0-9]+)[^<>\s\'\",]+%ie", "detailsLink(\\1)", $s);

значение $ ADDRESS равно 192.168.2.22/dev

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Не нужно изобретать велосипед:

$url="http://192.168.2.22/dev/details.php?id=21&module=info#Desc";

parse_str(parse_url($url,PHP_URL_QUERY), $arr);

print_r($arr);

дает вам:

Array
(
    [id] => 21
    [module] => info
)

parse_str () parse_url ()

1 голос
/ 14 июля 2011

Я не понимаю. Почему бы вам просто не использовать $_GET['id']?

РЕДАКТИРОВАТЬ: не важно. Я никогда не знал об этих функциях! (parse_url, то есть)

...