Я использую одну CMS, написанную на PHP. Я использую его встроенные функции для выполнения операций. В одном месте я хочу получить путь к изображению, следующий за ним код, который работает нормально и возвращает изображение.
$sUserProfileImage = Phpfox::getLib('image.helper')->display(array_merge(array('user' => Phpfox::getService('user')->getUserFields(true)), array (
'path' => 'core.url_user',
'file' => Phpfox::getUserBy('user_image'),
'suffix' => '_75_square',
'max_width' => 52,
'max_height' => 52
)
)
);
Теперь я попытался распечатать данные из этого массива с помощью print_r($sUserProfileImage)
функция.
Затем, когда я открываю этот файл PHP в браузере, изображение выводится в правильном размере вместо печати содержимого массива.
Затем я просмотрел исходный HTML-код страницы. Там я получил следующие детали:
<a href="http://54.174.50.242/profile-244/" title="Campusknot ."><img src="http://54.174.50.242/file/pic/user/2015/02/52x52xade52764529ccd469bbddf98aa62712c_75_square.jpg,qt=54d2071f7ab6c.pagespeed.ic.8JdGurxQEJ.jpg" alt="Campusknot ." height="52" width="52" pagespeed_url_hash="2704114946"/></a><script pagespeed_no_defer="" type="text/javascript">//<![CDATA[
(function(){var e=encodeURIComponent,f=window,h=document,m="width",n="documentElement",p="height",q="length",r="prototype",s="body",t="&",u="&ci=",w="&n=",x="&rd=",y=",",z="?",A="Content-Type",B="Microsoft.XMLHTTP",C="Msxml2.XMLHTTP",D="POST",E="application/x-www-form-urlencoded",F="img",G="input",H="load",I="oh=",J="on",K="pagespeed_url_hash",L="url=",M=function(a,c,d){if(a.addEventListener)a.addEventListener(c,d,!1);else if(a.attachEvent)a.attachEvent(J+c,d);else{var b=a[J+c];a[J+c]=function(){d.call(this);b&&b.call(this)}}};f.pagespeed=f.pagespeed||{};var N=f.pagespeed,O=function(a,c,d,b,g){this.d=a;this.f=c;this.g=d;this.a=g;this.c={height:f.innerHeight||h[n].clientHeight||h[s].clientHeight,width:f.innerWidth||h[n].clientWidth||h[s].clientWidth};this.e=b;this.b={}};O[r].j=function(a){a=a.getBoundingClientRect();return{top:a.top+(void 0!==f.pageYOffset?f.pageYOffset:(h[n]||h[s].parentNode||h[s]).scrollTop),left:a.left+(void 0!==f.pageXOffset?f.pageXOffset:(h[n]||h[s].parentNode||h[s]).scrollLeft)}};O[r].i=function(a){if(0>=a.offsetWidth&&0>=a.offsetHeight)return!1;a=this.j(a);var c=a.top.toString()+y+a.left.toString();if(this.b.hasOwnProperty(c))return!1;this.b[c]=!0;return a.top<=this.c[p]&&a.left<=this.c[m]};O[r].l=function(){for(var a=[F,G],c=[],d={},b=0;b<a[q];++b)for(var g=h.getElementsByTagName(a[b]),k=0;k<g[q];++k){var v=g[k].getAttribute(K);v&&g[k].getBoundingClientRect&&this.i(g[k])&&!(v in d)&&(c.push(v),d[v]=!0)}b=!1;a=I+this.g;this.a&&(a+=w+this.a);if(0!=c[q]){a+=u+e(c[0]);for(b=1;b<c[q];++b){d=y+e(c[b]);if(131072<a[q]+d[q])break;a+=d}b=!0}this.e&&(d=x+e(JSON.stringify(this.h())),131072>=a[q]+d[q]&&(a+=d),b=!0);N.criticalImagesBeaconData=a;if(b){var c=this.d,b=this.f,l;if(f.XMLHttpRequest)l=new XMLHttpRequest;else if(f.ActiveXObject)try{l=new ActiveXObject(C)}catch(P){try{l=new ActiveXObject(B)}catch(Q){}}l&&(l.open(D,c+(-1==c.indexOf(z)?z:t)+L+e(b)),l.setRequestHeader(A,E),l.send(a))}};O[r].h=function(){for(var a={},c=h.getElementsByTagName(F),d=0;d<c[q];++d){var b=c[d],g=b.getAttribute(K);if("undefined"==typeof b.naturalWidth||"undefined"==typeof b.naturalHeight||"undefined"==typeof g)break;if("undefined"==typeof a[b.src]&&0<b[m]&&0<b[p]&&0<b.naturalWidth&&0<b.naturalHeight||"undefined"!=typeof a[b.src]&&b[m]>=a[b.src].n&&b[p]>=a[b.src].m)a[g]={renderedWidth:b[m],renderedHeight:b[p],originalWidth:b.naturalWidth,originalHeight:b.naturalHeight}}return a};N.k=function(a,c,d,b,g){var k=new O(a,c,d,b,g);M(f,H,function(){f.setTimeout(function(){k.l()},0)})};N.criticalImagesBeaconInit=N.k;})();pagespeed.criticalImagesBeaconInit('/mod_pagespeed_beacon','http://54.174.50.242/webservice/all_feeds.php','WyQ3C4mRrQ',false,'d8V9nFMe46w');
//]]></script>
Из приведенных выше данных я хотел только следующие данные ответа, URL изображения:
<img src="http://54.174.50.242/file/pic/user/2015/02/52x52xade52764529ccd469bbddf98aa62712c_75_square.jpg,qt=54d2071f7ab6c.pagespeed.ic.8JdGurxQEJ.jpg" alt="Campusknot ." height="52" width="52" pagespeed_url_hash="2704114946"/>
Мне придется назначить URL этого изображения как новый элемент в другом массиве, но я не могу его получить. И еще одна вещь, нет другого способа, кроме кода, написанного выше, чтобы получить URL изображения. Поэтому, пожалуйста, помогите мне в этом отношении.
Заранее спасибо.
Вы можете получить URL изображения из HTML с помощью регулярных выражений
preg_match_all('/<img .*src=["|\']([^"|\']+)/i', $html, $matches);
foreach ($matches[1] as $key=>$value) {
echo $value."<br>";
}
Других решений пока нет …