Filtering RSS links with regular expressions - php

I'm a bit of a noob, but have been getting my feet wet building a site in php on localhost. The problem that I'm having is that I can't figure out how to filter RSS content that contains a regular expression in their links.
My code to display a RSS feed with PHP:
<?php
///// RSS FEED CODE
function getFeed1($feed_url) {
$content = file_get_contents($feed_url);
$x = new SimpleXmlElement($content);
echo "<ul>";
foreach($x->channel->item as $entry) {
echo "<li><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a></li>";
}
echo "</ul>";
}
getFeed1("http://www.drf.com/feeds/all-articles-of-track/SA");
?>
The results are displayed as such in a browser as links to a page,
Espinoza wins George Woolf Memorial Jockey Award
Dortmund will get month to clear up foot problem
Abrams hopes McHeat stays hot for Sensational Star
Santa Anita attendance up, handle down
Hot Market returns from long absence on hillside turf course
Moon Over Paris, Divina Comedia key to pick six
Millionaire Alert Bay looks to pad bankroll in Sensational Star
Santa Anita to replace turf course this summer
Free: Santa Anita horses to watch for week of Feb. 22
Iron Rob vanned off after winning Baffle Stakes
I am trying to figure out how to use an if-statement that will filter out the links(href) that start with “http://www.drf.com/news/preview/”.
So the results will look like:
Espinoza wins George Woolf Memorial Jockey Award
Santa Anita attendance up, handle down
Millionaire Alert Bay looks to pad bankroll in Sensational Star
Santa Anita to replace turf course this summer
Iron Rob vanned off after winning Baffle Stakes
I've spent the last two days trying different variations of:
if (strpos($x, 'http://www.drf.com/news/preview/') !== false)
and
if (preg_match('http://www.drf.com/news/preview/', $x))
Yet I can't get the syntax right or I'm screwing up somewhere.
I have found post that suggest using third party filters, or the dead yahoo pipes, yet I have a feeling that what I seek can be accomplished with an if-statement. I have yet to find anything that can parse out a rss href using a regular expression.
For the people who know php, what am I missing? I have spent the last two days googling and trying different things mentioned on the internet, but to no avail. I know the chase is always better then the catch, yet I lost the tracks of my prey. Please Help by pointing me, and others who found this post, find the trail.
Thank you

This is the regular expression you are looking for:
/^(http\:\/\/www\.drf\.com\/news\/preview\/)/i
You should accept HTTPS too with a small modification:
/^(https?\:\/\/www\.drf\.com\/news\/preview\/)/i
And do not fall back on the www subdomain!
/^(https?\:\/\/(www\.)?drf\.com\/news\/preview\/)/i

Related

JSON output in array using PHP explode

So, I have an output from an API using JSON:
{"listings":[{"adoption_fee":"$200","adoption_process":"For cats, please fill out our \u003ca href=\"http://www.haart.org.au/pre-adoption-form-cats/\"\u003ePre-Adoption Questionnaire - Cats\u003c/a\u003e.\r\n\r\nFor dogs, please fill out our \u003ca href=\"http://www.haart.org.au/pre-adoption-form-dogs/\"\u003ePre-Adoption Questionnaire - Dogs\u003c/a\u003e.\r\n\r\nFor more information on our Adoption Process, please visit this \u003ca href=\"http://www.haart.org.au/our-adoption-process/\"\u003elink\u003c/a\u003e.\r\n\r\nPlease make sure that you are familiar with our \u003ca href=\"http://www.haart.org.au/adoption-agreement/\"\u003eAdoption Agreement\u003c/a\u003e as it has recently changed.\r\n\r\nFor more information on any of our animals, please \u003ca href=\"http://www.haart.org.au/contact-us/\"\u003eContact Us\u003c/a\u003e.","age":"5 years 8 months","breeds":["Domestic Short Hair"],"breeds_display":"Domestic Short Hair","coat":"Short","contact_name":null,"contact_number":"08 6336 9410","contact_preferred_method":"Email","created_at":"2/9/2014 15:23","date_of_birth":"12/7/2012","desexed":true,"foster_needed":false,"gender":"Female","group":"Homeless and Abused Animal Rescue Team","heart_worm_treated":null,"id":316602,"interstate":false,"last_updated":"22/3/2018 9:40","medical_notes":"","microchip_number":"","mix":false,"multiple_animals":false,"name":"Whinney HC13-154","personality":"Whinney is an independent girl who likes lazing around the house, she's not bothered by other cats or dogs as long as they don't want to cuddle too much, then she will find her own alone space. \r\n\r\nShe will come up for the occasional cuddle but generally a cosy spot at the end of the bed or couch is all this beautiful girl craves :) \r\n\r\n** PLEASE NOTE: all HAART cats are to be adopted as indoor only cats for their safety and to comply with the legal requirements of the Cat Act. \r\nHAART recommends the use of Oscillot cat fencing or feline safe Catio's/portable caboodle to ensure they have access to the outdoors. \r\nPlease ask us for information on other suitable products **","photos":[{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg"},{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg"},{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg"}],"senior":false,"size":null,"species":"Cat","state":"WA","postcode":"6000","vaccinated":"Yes","wormed":"Yes"}
I want to grab the "adoption_process" and "personality" parts and using PHP break the lines when "\n" is in the output.
I have the following:
$adoption_process = {
foreach ($line in explode("\n", $json['adoption_process']))
{$line = trim($line);
}
}
Then I'm using print_r to echo the output. But it's not working.
Open to suggestions on other (better) ways to do this.
The JSON you mention is invalid. It's not properly closed array at the end. I have copy the JSON and put changes. Just have look below, Hope it will help you out.
<?php
$json = '{"listings":[{"adoption_fee":"$200","adoption_process":"For cats, please fill out our \u003ca href=\"http://www.haart.org.au/pre-adoption-form-cats/\"\u003ePre-Adoption Questionnaire - Cats\u003c/a\u003e.\r\n\r\nFor dogs, please fill out our \u003ca href=\"http://www.haart.org.au/pre-adoption-form-dogs/\"\u003ePre-Adoption Questionnaire - Dogs\u003c/a\u003e.\r\n\r\nFor more information on our Adoption Process, please visit this \u003ca href=\"http://www.haart.org.au/our-adoption-process/\"\u003elink\u003c/a\u003e.\r\n\r\nPlease make sure that you are familiar with our \u003ca href=\"http://www.haart.org.au/adoption-agreement/\"\u003eAdoption Agreement\u003c/a\u003e as it has recently changed.\r\n\r\nFor more information on any of our animals, please \u003ca href=\"http://www.haart.org.au/contact-us/\"\u003eContact Us\u003c/a\u003e.","age":"5 years 8 months","breeds":["Domestic Short Hair"],"breeds_display":"Domestic Short Hair","coat":"Short","contact_name":null,"contact_number":"08 6336 9410","contact_preferred_method":"Email","created_at":"2/9/2014 15:23","date_of_birth":"12/7/2012","desexed":true,"foster_needed":false,"gender":"Female","group":"Homeless and Abused Animal Rescue Team","heart_worm_treated":null,"id":316602,"interstate":false,"last_updated":"22/3/2018 9:40","medical_notes":"","microchip_number":"","mix":false,"multiple_animals":false,"name":"Whinney HC13-154","personality":"Whinney is an independent girl who likes lazing around the house, she\'s not bothered by other cats or dogs as long as they don\'t want to cuddle too much, then she will find her own alone space. \r\n\r\nShe will come up for the occasional cuddle but generally a cosy spot at the end of the bed or couch is all this beautiful girl craves :) \r\n\r\n** PLEASE NOTE: all HAART cats are to be adopted as indoor only cats for their safety and to comply with the legal requirements of the Cat Act. \r\nHAART recommends the use of Oscillot cat fencing or feline safe Catio\'s/portable caboodle to ensure they have access to the outdoors. \r\nPlease ask us for information on other suitable products **","photos":[{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_db5ee_orig.jpg"},{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_fb958_orig.jpg"},{"small_80":"https://res.cloudinary.com/petrescue/image/upload/h_80,w_80,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","medium_130":"https://res.cloudinary.com/petrescue/image/upload/h_130,w_130,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","large_340":"https://res.cloudinary.com/petrescue/image/upload/h_340,w_340,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg","xlarge_900":"https://res.cloudinary.com/petrescue/image/upload/h_900,w_900,c_pad,q_auto:best/petrescue-production-s3/uploads/pet_photos/2014/9/2/316602_9030a_orig.jpg"}],"senior":false,"size":null,"species":"Cat","state":"WA","postcode":"6000","vaccinated":"Yes","wormed":"Yes"}]}';
$data = json_decode($json,true);
foreach($data['listings'] as $key => $value){
$process = explode("\n",$value['adoption_process']);
foreach($process as $k => $v){
if(trim($v)){
$line[] = $v;
}
}
}
print_r($line);

random quotes after each post wordpress

I have start a new plugin that its suppose to show random quotes after each post
it not give any error but its now show any text after my posts.
I have try this way but its seems i have fail some were.
I don t get any error but after activate its suppose to show a random text but nothing, i could not made it work.
After look to my code i have try to modify
and there is no erros but my code continue to not show the text
Firt i tank you #mangenta for the help
But well i have the same problem of my first question is
i want to pass the quotes variable $quote to the signature place but it seems not work.
not show my text after my post like i need and i can not fin any way yet to pass
the quotes variable to the signature code
This is my code
<?php
/*
Plugin Name: Random Text Quotes
Version: 1.0
Description: Random Text Quotes Albert Einstein.
Plugin URI: https://mediaads.eu/
Author: Helder Ventura
Author URI: https://mediaads.eu
Version: (standalone)
Usage: install activate and done
*/
$bgcolor = '#FFFFCC';
$textcolor = 'black';
$textsize = '2';
// Array Structure: "Quote","Author"
$allqts = array
("*His aim was to substitute for a petrified and barren
system of ideas the unbiased and strenuous quest
for a deeper and more consistent comprehension of
physical and astronomical facts.",
"Albert Einstein",
"The discovery and use of scientific reasoning by
Galileo was one of the most important achievements
in the history of human thought.<br>" ,
"Albert Einstein",
"I admire Gandhi greatly but I believe there are two
weaknesses in his program.",
"Albert Einstein",
"I believe that Gandhi’s views were the most enlightened
among all of the political men of our time.",
"Albert Einstein",
"Liberty, when it begins to take root, is a plant of rapid growth.",
"George Washington",
"Gandhi, the greatest political genius of our time,
indicated the path to be taken.",
"Albert Einstein",
"Gandhi’s development resulted from extraordinary
intellectual and moral forces in combination with
political ingenuity and a unique situation.",
"Albert Einstein",
"Anyone who has never made a mistake has never tried anything new",
"Albert Einstein",
"Progress doesn't come from early risers, progress is made<br>by lazy men
looking for easier ways to do things.",
"Lazarus Long <font size=-2>(Time Enough for Love by Robert A. Heinlein)
</font>",
"On Johann Wolfgang von Goethe (1749–1832)
I feel in him a certain condescending attitude toward
the reader, and miss the humility that is comforting,
especially when it comes from great men.",
"Albert Einstein",
"*This was the first time I’ve ever heard of such
an important man who speaks at least briefly with
his mother every day.",
"Albert Einstein",
"On Werner Heisenberg (1901–1976)
Professor Heisenberg was here, a German.",
"Albert Einstein",
"I am very happy here and enjoying the American
summer as well as the news about Hitler’s mad
deed of desperation.",
"Albert Einstein",
"Hitler appeared, a man with limited intellectual
abilities and unfit for any useful work, bursting with
envy and bitterness against all whom circumstance
and nature had favored over him. . . .",
"Albert Einstein",
"*I haven’t forgotten that the Swiss authorities didn’t
stand by me in any way when Hitler stole all of my
savings, even those designated for my children.",
"Albert Einstein",
"On Immanuel Kant (1724–1804)
*Kant’s much-praised view on Time reminds me of
Andersen’s tale of the emperor’s new clothes, only
that instead of the emperor’s new clothes we have
the form of intuition.",
"Albert Einstein",
"*Kant is sort of a highway with lots and lots of milestones.
Then all the little dogs come and each deposits
his contribution at the milestones.",
"Albert Einstein",
"What seems to me the most important thing in
Kant’s philosophy is that it speaks of a priori concepts
for the construction of science.",
"Albert Einstein",
"Kant, thoroughly convinced of the indispensability
of certain concepts, took them—just as they are selected—to
be the necessary premises for every kind
of thinking and differentiated them from concepts
of empirical origin.",
"Albert Einstein",
"On George Kennan (1904–2005)
Princeton University Press sent me George Kennan’s
new book [Realities of American Foreign Policy] and I
read it right away.",
"Albert Einstein",
"[Kepler] belonged to those few who cannot do otherwise
than openly acknowledge their convictions
on every subject. . . .",
"Albert Einstein",
"There we meet a finely sensitive person, passionately
dedicated to the search for a deeper insight into the
essence of natural events, who, despite internal and
external difficulties, reached his loftily placed goal.",
"Albert Einstein",
"Share Your Love With The World.",
"Helder Ventura"
);
// Gets the Total number of Items in the array
// Divides by 2 because there is a Quote followed by an Author
$totalqts = (count($allqts)/2);
// Subtracted 1 from the total because '0' is not accounted for otherwise
$nmbr = (rand(0,($totalqts-1)));
$nmbr = $nmbr*2;
//$nmbr = 18;
$quote = $allqts[$nmbr];
$nmbr = $nmbr+1;
$author = $allqts[$nmbr];
// You can delete this section
// it is only so Search engines can find it
if ($_SERVER['PHP_SELF'] == "/quotes.php") {
echo "<Title>Random Text Quote</title>";
echo "<meta name=\"Description\" content=\"Random Text Quote\">";
echo "<meta name=\"keywords\" content=\"Random Text Quote\">";
}
/// End Delete
$space = "<font color=$bgcolor>.....................................</font>";
$comments = "<br><center><font size='-2'><i><a href='quotes.php'>Random Text
Quote</a></i></font></center>";
echo "<center>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<Font color=$textcolor size='$textsize'><i>";
echo "$quote<br>";
echo "</i></font>";
echo "$space $author";
echo "$comments";
echo "</center>";
// You can delete this section as well - it's my shameless plug:
// it is only so Search engines can find it
if ($_SERVER['PHP_SELF'] == "/quotes.php") {
echo "<br/><br/>If you <i>really</i> like it, I do accept donations via
PayPal: <a href='http://zonadelike.publiadds.org.pt//donate'>Donations</a>";
echo "<br/><br/>";
}
/// End Delete
IF ($_SERVER['PHP_SELF'] == "/quotes.php") {
show_source("quotes.php");
}
// Add Signature Image after single post
add_filter('the_content','add_signature', 1);
function add_signature($text) {
global $post;
if(($post->post_type == 'post'))
$text .= '<div class="signature"><a href="https://mediaads.eu/"
target="_blank" title=$text>'.$quote.'</a></div>';
return $text;
}
?>
I tested the following code from your original post.
<?php
/*
Plugin Name: Random Text Quotes
Version: 1.0
Description: Random Text Quotes Albert Einstein.
Plugin URI: https://mediaads.eu/
Author: Helder Ventura
Author URI: https://mediaads.eu
Version: (standalone)
Usage: install activate and done
*/
function ab_arq_generate() {
$quotes = array(
'I am happy to be in Boston. I have heard of Boston
as one of the most famous cities in the world and the
center of education. I am happy to be here and expect
to enjoy my visit to this city and to Harvard.
On his visit to the city with Chaim Weizmann. New York
Times, May 17, 1921. Contributed by A. J. Kox in response
to the many quotations about Princeton in this book (see
later in this section).',
'*America is interesting, with all its hustle and bustle.
It is easier to feel enthusiasm for it than for other
countries I’ve unsettled with my presence. I had to
consent to being shown around like a prize ox to address
innumerable small and large gatherings. . . .
It’s a wonder I survived it all.
To Michele Besso, ca. May 21–30, 1921. CPAE, Vol. 12,
Doc. 141',
'*It is the women . . . who dominate all of American
life. The men are interested in nothing at all; they
work, work as I haven’t seen anyone work anywhere
else. For the rest, they are toy dogs for their
wives, who spend the money in the most excessive
fashion and who shroud themselves in a veil of
extravagance.
From an interview in the Nieuwe Rotterdamsche Courant,
July 4, 1921. Einstein insisted he was wrongly quoted and
wrote a rebuttal in the Vossische Zeitung six days later,
claiming he was shocked when he read the account. ',
'Even if Americans are less scholarly than Germans,
they do have more enthusiasm and energy, causing
a wider dissemination of new ideas among the
people.
Quoted in the New York Times, July 12, 1921
',
'A firm approach is indispensable everywhere in
America; otherwise one receives no payment and
little esteem.
To Maurice Solovine, January 14, 1922. Published in Letters
to Solovine, 49. Einstein Archives 21-157'
);
return $quotes[rand(0, count($quotes)-1)];
}
function ab_arq_change_bloginfo( $text, $show ) {
if( 'description' == $show ) {
$text = ab_arq_generate();
}
return $text;
}
add_filter( 'bloginfo', 'ab_arq_change_bloginfo', 10, 2 );
// Add Signature Image after single post
add_filter('the_content','add_signature', 1);
function add_signature($text) {
global $post;
if(($post->post_type == 'post'))
$text .= '<div class="signature"><a href="https://mediaads.eu/"
target="_blank" title=$text>AAAAA</a></div>';
return $text;
}
?>
The only change I made was I added the text 'AAAAA' in your signature A element since it had no text content.
This code works on my site using the 2016 theme. So, there is nothing wrong with the code itself. I would try a different theme to see if the theme you are using is the source of problem - I would try 2016 as it is known to work in my environment. For your code to run the theme must call certain filters - 'blog_info', 'the_content' - further, the 'blog_info' filter must be called with the parameter 'description'. Some themes may not do this. The filter 'the_content' was probably called but did not produce any visible content as your A element had no text content.
UPDATED CODE - to move quote from tagline location to signature location
<?php
/*
Plugin Name: Random Text Quotes
Version: 1.0
Description: Random Text Quotes Albert Einstein.
Plugin URI: https://mediaads.eu/
Author: Helder Ventura
Author URI: https://mediaads.eu
Version: (standalone)
Usage: install activate and done
*/
function ab_arq_generate() {
$quotes = array(
'I am happy to be in Boston. I have heard of Boston
as one of the most famous cities in the world and the
center of education. I am happy to be here and expect
to enjoy my visit to this city and to Harvard.
On his visit to the city with Chaim Weizmann. New York
Times, May 17, 1921. Contributed by A. J. Kox in response
to the many quotations about Princeton in this book (see
later in this section).',
'*America is interesting, with all its hustle and bustle.
It is easier to feel enthusiasm for it than for other
countries I’ve unsettled with my presence. I had to
consent to being shown around like a prize ox to address
innumerable small and large gatherings. . . .
It’s a wonder I survived it all.
To Michele Besso, ca. May 21–30, 1921. CPAE, Vol. 12,
Doc. 141',
'*It is the women . . . who dominate all of American
life. The men are interested in nothing at all; they
work, work as I haven’t seen anyone work anywhere
else. For the rest, they are toy dogs for their
wives, who spend the money in the most excessive
fashion and who shroud themselves in a veil of
extravagance.
From an interview in the Nieuwe Rotterdamsche Courant,
July 4, 1921. Einstein insisted he was wrongly quoted and
wrote a rebuttal in the Vossische Zeitung six days later,
claiming he was shocked when he read the account. ',
'Even if Americans are less scholarly than Germans,
they do have more enthusiasm and energy, causing
a wider dissemination of new ideas among the
people.
Quoted in the New York Times, July 12, 1921
',
'A firm approach is indispensable everywhere in
America; otherwise one receives no payment and
little esteem.
To Maurice Solovine, January 14, 1922. Published in Letters
to Solovine, 49. Einstein Archives 21-157'
);
return $quotes[rand(0, count($quotes)-1)];
}
// Add Signature Image after single post
add_filter('the_content','add_signature', 1);
function add_signature($text) {
global $post;
if(($post->post_type == 'post'))
$text .= '<div class="signature"><a href="https://mediaads.eu/"
target="_blank" title=$text>' . ab_arq_generate() . '</a></div>';
return $text;
}
?>

Empty array returned when using preg_match on a website to access information

I'm trying to access some content from a weather page in my php file. The website is: http://www.weather-forecast.com/locations/Bergen/forecasts/latest and in view source, I want to be able to get the information from: "3 Day Weather Forecast Summary:" and all the required information in there.
My code is so far:
<?php
$contents = file_get_contents("http://www.weather-forecast.com/locations/Bergen/forecasts/latest");
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase"> (.*?) </s', $contents, $matches);
print_r($matches);
?>
For some reason it wont give me all the information between the spans in the sourcecode. What I want to access is:
3 Day Weather Forecast Summary: Moderate rain (total 17mm), heaviest on Mon morning. Very mild (max 18°C on Wed afternoon, min 11°C on Tue night). Winds decreasing (fresh winds from the WSW on Mon morning, calm by Mon night).
like this in clean text. Any suggestions?
Regards, Bojar
As far as I can tell, your regex should not include spaces around the wildcard match, because the website source doesn't have any spaces before and after the 3 day summary. Try:
'... <span class="phrase">(.*?)</s'
Full call:
preg_match(
'/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)</s',
$contents,
$matches
);
Edit: Just confirmed that the pattern without spaces produces the expected result.
Additionally, please be careful about using this sort of parsing for anything long-term or anything outside of your personal hobby projects. It is extremely prone to breaking down after even the most minor of changes (it depends on whitespace!) in HTML structure, CSS classes, etc etc. For something more reliable, consider using an HTML parser with CSS selectors, such that you can look for e.g. span.phrase in the document. While this is still not perfect, it is more stable than a preg_match.

how can i retrieve values from xml in php?

I'm trying to parse a simple xml string and store into arrays..
i want the information put into a array so i can get it from an index somehow, can anyone help me?
this is what I'm trying so far:
<?php
$string = file_get_contents("http://api.themoviedb.org/2.1/Person.search/en/xml/e72f8f2f685df4dad86f939097d14f36/Brad+Pitt");
$xml = new SimpleXMLElement($string);
foreach($xml->children()->children()->children() as $child)
{
if ($child->getName() == "images")
echo $child[0];
}
$error_code = (string)$body[0]->Response->return->error_code;
print_r($error_code);
?>
this is the xml response:
<OpenSearchDescription><opensearch:Query searchTerms="brad+pitt"/><opensearch:totalResults>1</opensearch:totalResults><people><person><score>1</score><popularity>3</popularity><name>Brad Pitt</name><id>287</id><biography>From Wikipedia, the free encyclopedia. William Bradley "Brad" Pitt (born December 18, 1963) is an American actor and film producer. Pitt has received two Academy Award nominations and four Golden Globe Award nominations, winning one. He has been described as one of the world's most attractive men, a label for which he has received substantial media attention. Pitt began his acting career with television guest appearances, including a role on the CBS prime-time soap opera Dallas in 1987. He later gained recognition as the cowboy hitchhiker who seduces Geena Davis's character in the 1991 road movie Thelma & Louise. Pitt's first leading roles in big-budget productions came with A River Runs Through It (1992) and Interview with the Vampire (1994). He was cast opposite Anthony Hopkins in the 1994 drama Legends of the Fall, which earned him his first Golden Globe nomination. In 1995 he gave critically acclaimed performances in the crime thriller Seven and the science fiction film 12 Monkeys, the latter securing him a Golden Globe Award for Best Supporting Actor and an Academy Award nomination. Four years later, in 1999, Pitt starred in the cult hit Fight Club. He then starred in the major international hit as Rusty Ryan in Ocean's Eleven (2001) and its sequels, Ocean's Twelve (2004) and Ocean's Thirteen (2007). His greatest commercial successes have been Troy (2004) and Mr. & Mrs. Smith (2005). Pitt received his second Academy Award nomination for his title role performance in the 2008 film The Curious Case of Benjamin Button. Following a high-profile relationship with actress Gwyneth Paltrow, Pitt was married to actress Jennifer Aniston for five years. Pitt lives with actress Angelina Jolie in a relationship that has generated wide publicity. He and Jolie have six children—Maddox, Pax, Zahara, Shiloh, Knox, and Vivienne. Since beginning his relationship with Jolie, he has become increasingly involved in social issues both in the United States and internationally. Pitt owns a production company named Plan B Entertainment, whose productions include the 2007 Academy Award winning Best Picture, The Departed. Description above from the Wikipedia article Brad Pitt, licensed under CC-BY-SA, full list of contributors on Wikipedia.</biography><url>http://www.themoviedb.org/person/287</url><images><image type="profile" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w45/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg" size="thumb" width="45" height="68" id="4ea5cb8c2c0588394800006f"/><image type="profile" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg" size="profile" width="185" height="281" id="4ea5cb8c2c0588394800006f"/><image type="profile" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/h632/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg" size="h632" width="416" height="632" id="4ea5cb8c2c0588394800006f"/><image type="profile" url="http://d3gtl9l2a4fn1j.cloudfront.net/t/p/original/w8zJQuN7tzlm6FY9mfGKihxp3Cb.jpg" size="original" width="1295" height="1969" id="4ea5cb8c2c0588394800006f"/></images><version>685</version><last_modified_at>2013-07-26 18:18:17 UTC</last_modified_at></person></people></OpenSearchDescription>
thanks, help appreciated!
try this :
$string = file_get_contents("http://api.themoviedb.org/2.1/Person.search/en/xml/e72f8f2f685df4dad86f939097d14f36/Brad+Pitt");
$xml = new SimpleXMLElement($string);
foreach($xml->people->person->images->image as $child){
$node = (array)$child;
print_r($node);
echo $node['#attributes']['url'];
}
echo "<pre>";
print_r($xml->people->person->images->image);
exit;
Hope it will help
The SimpleXML extension provides is a simple way of getting an XML element's name and text.
Compared to DOM or the Expat parser, SimpleXML just takes a few lines of code to read text data from an XML element.
SimpleXML converts the XML document (or XML string) into an object, like this:
Elements are converted to single attributes of the SimpleXMLElement object. When there's more than one element on one level, they are placed inside an array
Attributes are accessed using associative arrays, where an index corresponds to the attribute name
Text inside elements is converted to strings. If an element has more than one text node, they will be arranged in the order they are found
For more info visit:
W3Schools
I have been used function that work fine for me.
Have you tried this one?
http://www.bin-co.com/php/scripts/xml2array/

Convert DOMElement to string and then strip unwanted tags

Now, thanks to community, one problem was fixed ( Delete all elements of a certain type from an XML doc using PHP ). Now I luckily hit other :)
So, I have XML file:
<piletilve_info>
<shows>
<show>
<description>
<lat>
<![CDATA[
LA CENERENTOLA <BR><BR>
("Cinderella")<BR><BR>
Opera buffo by Gioachino Rossini<BR><BR>
Music Director and Conductor: Arvo Volmer<BR>
Stage Director and Set Designer: Michiel Dijkema (Amsterdam)<BR>
Costumes: Claudia Damm (Berlin)<BR><BR>
Premiere on November 10, 2006<BR>
Approx running time: 3 h 20 min<BR>
Sung in Italian with subtitles in Estonian and English<BR><BR>
Who hasn’t heard the fairy-tale of Cinderella who crouched in the ashes, danced to the tune of her step-sisters but finally found the man of her dreams and a happy life. Why should this fairy-tale be told today?<BR>
An exciting and unexpected solution of the story of Cinderella with striking scenery and fantastic-modern costumes is presented by the Dutch stage director Michiel Dijkema and the German designer Claudia Damm.<BR>
In this story, an unhappy soul dreams of a prince on a white horse and of a better life, and women following the last trends chase the prince, and a man who considers himself very wise, is only interested in himself.<BR>
"Cinderella" is not just a fairy-tale, it includes reality as well as dreams, a lot of fantasies, comedy and grotesque. And all of this is expressed by the brilliant and virtuous music of Rossini!<BR>
]]>
</lat>
</description>
</show>
</shows>
<other node>
...
</other node>
</piletilve_info>
I navigate to my needed node using this code:
$books = $xpath->query('shows/show/description');
foreach($books as $description)
{
$description->removeChild($eng_lang);
$lat_lang = $description->getElementsByTagName('lat')->item(0);
}
I want to output modified $lat_lang elements , which is <[[CDATA ]]> parent, content using this mixed function:
$lat_lang->nodeValue = mb_convert_encoding(print_r(strip_tags_only($lat_lang->item(0)->nodeValue, TRUE),'<html><head><body>'), 'UTF-8' ,$encoding);
, but I fail and when I execute script on apache server, I get this error:
The XML page cannot be displayed
Cannot view XML input using XSL style
sheet. Please correct the error and
then click the Refresh button, or try
again later.
Only one top level element is allowed
in an XML document. Error processing
resource
'http://www.bilesuserviss.lv/lv_filtrs_...
Catchable fatal error: Object
of class DOMElement could not be
converted to string in /var/www/...
Could you help me finding solution?
Maybe the fact I do develop on delphi makes me this whole PHP<->XML coding more difficult that for normal people would .. :(
It was spelling problem.
Function name was strip_only_tags(), but I called it with strip_tags_only();
I am working on delphi and php<>xml project whole day .. Kinda feel tired already :(
Sorry all.
Also thansk to Gordon for commept. Kinda woke me up :D

Categories