2012-05-31 2 views
-1

Я ищу попробовать определить регулярное выражение для разбора из интерьера URL из этого предупреждения Google перенаправлятьОпределение регулярного выражения для URL для Друпало полей

http://www.google.com/url?sa=X&q=http://weheartit.com/entry/29409069&ct=ga&cad=CAcQARgAIAEoATAAOABAo5aK_gRIAlgBYgVlbi1VUw&cd=jRWL16jvo8k&usg=AFQjCNGbJMqWtbCxpcJdu4PGD6RToU6NTw 

Что мне нужно сделать, это удалить первую часть что

http://www.google.com/url?sa=X&q= 

И я хотел бы также удалить строку косой, которая

&ct=ga&cad=CAcQARgAIAEoATAAOABAo5aK_gRIAlgBYgVlbi1VUw&cd=jRWL16jvo8k&usg=AFQjCNGbJMqWtbCxpcJdu4PGD6RToU6NTw 

Так окончание URL я закончу с этим

http://weheartit.com/entry/29409069 

Я просто хотел, чтобы обновить это спасибо за помощь. Это была проблема в модуле связи для Друпала и было зафиксировано

+0

У нас есть несколько дубликатов. Регулярное выражение супер просто. И альтернатива с 'parse_url' и' parse_str' тем более. – mario

+0

Ну, это может быть очень просто для вас, но у меня много проблем, чтобы работать лучше всего, чем я мог придумать: field_web_screenhot ['und'] [0] [ 'URL']; $ url = preg_replace ('. *? (Http) (.) (.) ((?: \\/[\\ w \\. \\ -] +) +)', '', $ url); $ node-> field_web_screenhot ['und'] [0] ['url'] = $ url; возвращение; } > – naeluh

+0

возможно дубликат [Извлечение URL из строки] (http://stackoverflow.com/questions/4390556/extract-url-from-string) – mario

ответ

1

Все еще неясно, что вы пытаетесь достичь, будь то извлечение или удаление из окружающих частей, это не очень сложно:

preg_match('#q=(http://[^&]+)#', $source, $result); 
print $result[1]; 

Или иначе:

= preg_replace('#^.+q=([^&]+).+$#', '$1', $source); 

Будет работать.

И опять же, альтернатива заключается в parse_url и parse_str

+0

У меня есть drupal 7 install, что у меня есть поле модуля Link, которое заполняется rss-каналом из предупреждений Google. URL, который сохраняется в этом поле, является URL-адресом перенаправления google, потому что thats что google возвращает из фида, у меня есть еще один модуль, который форматирует url в URL-адресе для сервера скриншотов, который не поддерживает перенаправление должным образом, поэтому мне нужно получить основной URL-адрес, а не URL-адрес с перенаправлением для работы сервера скриншотов. сказал в первую очередь спасибо за помощь Марио делает больше смысла – naeluh

+0

Что я делаю, это сделать модуль, который работает с полем, которое мне нужно изменить и сохранить новый url – naeluh

1

Если вы действительно хотят лишить URL на части вручную, вы можете ...

$ cat parseurl.php 
#!/usr/local/bin/php 
<?php 

$url="http://www.google.com/url?sa=X&q=http://weheartit.com/entry/29409069&ct=ga&cad=CAcQARgAIAEoATAAOABAo5aK_gRIAlgBYgVlbi1VUw&cd=jRWL16jvo8k&usg=AFQjCNGbJMqWtbCxpcJdu4PGD6RToU6NTw"; 

# Parts of this section could be replaced with parse_url() 
$junk = explode("?", $url); 
$parts = explode("&", $junk[1]); 
$gvar = array(); 
foreach ($parts as $thisone) { 
    $junk = explode("=", $thisone); 
    $gvar[$junk[0]]=$junk[1]; 
} 

print_r($gvar); 

printf("Embedded URL: %s\n", $gvar["q"]); 

$ ./parseurl.php 
Array 
(
    [sa] => X 
    [q] => http://weheartit.com/entry/29409069 
    [ct] => ga 
    [cad] => CAcQARgAIAEoATAAOABAo5aK_gRIAlgBYgVlbi1VUw 
    [cd] => jRWL16jvo8k 
    [usg] => AFQjCNGbJMqWtbCxpcJdu4PGD6RToU6NTw 
) 
Embedded URL: http://weheartit.com/entry/29409069 
$ 

Чтобы сделать это с parse_url() и parse_str, вы можете использовать что-то вроде:

<?php 

$url="http://www.google.com/url?sa=X&q=http://weheartit.com/entry/29409069&ct=ga&cad=CAcQARgAIAEoATAAOABAo5aK_gRIAlgBYgVlbi1VUw&cd=jRWL16jvo8k&usg=AFQjCNGbJMqWtbCxpcJdu4PGD6RToU6NTw"; 

parse_str(parse_url($url, PHP_URL_QUERY), $gvar); 
printf("Embedded URL: %s\n", $gvar['q']); 

Это определенно кажется более простым способом, но я оставлю первую версию, чтобы вы могли видеть, что происходит (вероятно) «под капотом». :-)

+0

Не забывайте, что parse_str() принимает второй аргумент, массив, в который будут вставлены анализируемые переменные. Это устраняет вашу нижнюю сторону. – ghoti

+0

DOH! Правильно, готи. Я этого раньше не видел. Спасибо, я уточню свой ответ. – Graham

+0

Wow благодарит за вашу помощь. Я формулирую, как использовать это с drupal прямо сейчас. – naeluh

Смежные вопросы