这种地址有什么名称吗

WBOY
Libérer: 2016-06-23 14:23:50
original
1368 Les gens l'ont consulté

$u1="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$u2="http://t1.baidu.com/it/u=http%3A%2F%2Fauto.shm.com.cn%2Fattachement%2Fjpg%2Fsite1%2F20131008%2F001e90ad746b13bdae620a.jpg&fm=30
Copier après la connexion


如何用正则提出真正的地址
$u1=http://www.cnbeta.com/articles/244192.htm
$u2=http://auto.shm.com.cn/attachement/jpg/site1/20131008/001e90ad746b13bdae620a.jpg


回复讨论(解决方案)

不用正则,化为数组,然后自己组合。

$u1="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$c1 = parse_url($u1, PHP_URL_QUERY);parse_str($c1, $params);echo $params['u'];
Copier après la connexion
Copier après la connexion

$u1="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$c1 = parse_url($u1, PHP_URL_QUERY);parse_str($c1, $params);echo $params['u'];
Copier après la connexion
Copier après la connexion


我需要的是用正则提取

何必呢,2# 的方法其实很好,很高效。

$u1="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$u2="http://t1.baidu.com/it/u=http%3A%2F%2Fauto.shm.com.cn%2Fattachement%2Fjpg%2Fsite1%2F20131008%2F001e90ad746b13bdae620a.jpg&fm=30";preg_match('/u=([^&]+)&/',$u1,$m1);preg_match('/u=([^&]+)&/',$u2,$m2);echo urldecode($m1[1]);echo "
";echo urldecode($m2[1]);
Copier après la connexion
Copier après la connexion

$u1 = "http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$u2 = "http://t1.baidu.com/it/u=http%3A%2F%2Fauto.shm.com.cn%2Fattachement%2Fjpg%2Fsite1%2F20131008%2F001e90ad746b13bdae620a.jpg&fm=30";preg_match('/u=([^&]+)/', $u1, $r);echo urldecode($r[1]);preg_match('/u=([^&]+)/', $u2, $r);echo urldecode($r[1]);
Copier après la connexion
Copier après la connexion
http://www.cnbeta.com/articles/244192.htm
http://auto.shm.com.cn/attachement/jpg/site1/20131008/001e90ad746b13bdae620a.jpg

$u1 = "http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$u2 = "http://t1.baidu.com/it/u=http%3A%2F%2Fauto.shm.com.cn%2Fattachement%2Fjpg%2Fsite1%2F20131008%2F001e90ad746b13bdae620a.jpg&fm=30";preg_match('/u=([^&]+)/', $u1, $r);echo urldecode($r[1]);preg_match('/u=([^&]+)/', $u2, $r);echo urldecode($r[1]);
Copier après la connexion
Copier après la connexion
http://www.cnbeta.com/articles/244192.htm
http://auto.shm.com.cn/attachement/jpg/site1/20131008/001e90ad746b13bdae620a.jpg
如果不是u=哪就不好使了,能不能从第二个http开始匹配

何必呢,2# 的方法其实很好,很高效。

$u1="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F244192.htm&t=%5B%E5%9B%BE%5D1366+x+768%E5%88%86%E8%BE%A8%E7%8E%87%2B%E8%A7%A6%E6%8E%A7+%E8%81%94%E6%83%B3ThinkPad+X240s%E8%B6%85%E6%9E%81%E6%9C%AC%E6%9B%9D%E5%85%89";$u2="http://t1.baidu.com/it/u=http%3A%2F%2Fauto.shm.com.cn%2Fattachement%2Fjpg%2Fsite1%2F20131008%2F001e90ad746b13bdae620a.jpg&fm=30";preg_match('/u=([^&]+)&/',$u1,$m1);preg_match('/u=([^&]+)&/',$u2,$m2);echo urldecode($m1[1]);echo "
";echo urldecode($m2[1]);
Copier après la connexion
Copier après la connexion

我的内容中有中英文或加图片混合的字符串,不是光有上面的url
例如:
<html><body><img  src="http://t1.baidu.com/it/u=http%3A%2F%2Fsrc.house.sina.com.cn%2Fimp%2Fimp%2Fdeal%2Fb7%2F0e%2Fa%2F74e1fd81449bb857c66dc6c2812_p1_mk1_wm35.jpg&fm=30" alt="这种地址有什么名称吗" ></img>新浪乐居讯(记者 李晓娜) 金九月,烟台楼市供需两旺,完美收官。现销售排行榜已出炉,克而瑞数据显示,九月烟台六区商品房成交总金额25.88亿元,环比上涨14.5%。六区项目成交套数排行榜中,开发区华明星海湾 (论坛相册户型样板间点评地图搜索)成交320套,列位第一。万达以2.63亿的成交金额一举拿下</body></html>
Copier après la connexion

那你把 u 去掉不就行了?

那你把 u 去掉不就行了?
谢谢你的回复。

那你把 u 去掉不就行了?

	public static function getRealUrl($url){		$uri=$url;		preg_match_all("/=([^&]+)&/", $url, $match);		if(is_array($match[1]) && sizeof($match[1])>=1){			$uri=$match[1][0];		}		return urldecode($uri);	}
Copier après la connexion


上面的方法在别的地方也有调用,下面的是输出描述
	public function coverDescriptionOut(){		//2013070302		global $str;		$desc=$str->apoDecodeCharacter($this->getDescription());		//2013100802		//处理描述的图片地址		preg_match_all('/<img .+src=[\'"]([^\'"]+)[\'"].* alt="这种地址有什么名称吗" >/siU', $desc, $match);		return (!empty($match[1]))?str_replace($match[1][0], haloURI::getRealUrl($match[1][0]), $desc):$desc;	}
Copier après la connexion


想问一下:上面的coverDescriptionOut方法怎么用preg_replace_callback方法重写一下

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!