Thursday, February 24, 2011

Strip All Non Alphanumeric Characters Except Space With PHP

<?php
$string_to_be_stripped = "Hi, I am a string and I need to be stripped...";
$new_string = ereg_replace("[^A-Za-z0-9]", "", $string_to_be_stripped );

function alphanumericAndSpace( $string )
{
return preg_replace('/[^a-zA-Z0-9\s]/', '', $string);
}
echo alphanumericAndSpace( $string_to_be_stripped);
?>

Tuesday, February 22, 2011

Search in all column in the table fields

<?php
$conn = @mysql_connect( 'localhost','root' ,'')
or die( mysql_errno().': '.mysql_error().NL );
$db=mysql_select_db('kiwi',$conn);
$result = mysql_query("SHOW COLUMNS FROM $table");
if (mysql_num_rows($result) > 0)
{
$i=0;
while ($row = mysql_fetch_array($result))
{
if($i==0)
{

echo $q="select * from $table where ".$row[0]."=".$condition;
}
else
{
$q.=" or ".$row[0]."=".$condition;
}
$i++;
}
}
echo 'a';

echo $q;

?>

Monday, February 14, 2011

Curl Example code php

You must enable CURL libraries on you system


CASE 1: Just retrieve the site content

<?php
$ch = curl_init() or die(curl_error());
curl_setopt($ch, CURLOPT_URL,"http://www.bing.com/search?q=test&FORM=MSNH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data1=curl_exec($ch) or die(curl_error());
echo "".$data1."";
echo curl_error($ch);
curl_close($ch);
?>

CASE 2: Retreive the site content by posting the value from FORM for eg. contact form and other
<?php
$a=$_POST["a"]; // Form posted value
$ch = curl_init() or die(curl_error());
$params="a=$a";
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,"http://www.abc.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data1=curl_exec($ch) or die(curl_error());
echo "".$data1."";
echo curl_error($ch);
curl_close($ch);
?>

CASE 3: Retrieve date from HTTPS site
<?php
$a=$_POST["a"];
$ch = curl_init() or die(curl_error());
$params="a=$a";
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,"http://www.abc.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); // IF required
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
$data1=curl_exec($ch) or die(curl_error());
echo "".$data1."";
echo curl_error($ch);
curl_close($ch);
?>

Wednesday, January 12, 2011

Easy way to pagination from smart mysql command

When one is using a LIMIT attribute in their query ,
it's often fallowed by an OFFSET. These two togeather
are often used in pagination ( paging of results ) as in.

select * from thetable limit 10 offset 0

To find out how many rows would be available if one had not
used the LIMIT / OFFSET, one would alter the statement
above to look like this

select SQL_CALC_FOUND_ROWS * from thetable limit 10 offset 0

The return from both commands looks the same, so to get the
row count you need to issue a fallowup query

select FOUND_ROWS()

Friday, November 27, 2009

SimpleXML does not parse text inside CDATA tags in an XML.

SimpleXML does not parse text inside CDATA tags in an XML.

Consider the XML below:


$str = '';
$str.='some text goes here';
$str.='';

To parse it we use following syntax:

$xml = simplexml_load_string($str);

On printing it outputs:


SimpleXMLElement Object
(
[childNode] => some text goes here
)

Thats OK. Now the same xml but this time the text is enclosed in CDATA tags.


$str = '';
$str.='';
$str.=''

On printing this gives following output:


SimpleXMLElement Object
(
[childNode] => SimpleXMLElement Object
(
)

)

Yes its empty. This is because SimpleXML does not parse CDATA tags. All data enclosed within CDATA is ignored by SimpleXML parser.
Solution: Set the 3rd parameter to LIBXML_NOCDATA while parsing.

simplexml_load_string(simplexml_load_file too) actually takes 3 parameters.

* The string to parse
* Optional parameter – to return an object of class specified in this parameter. (By default it returns a SimpleXMLElement Object)
* Also optional – libxml parameters can be specified as options. This option provides the solution to our CDATA problem

Provide the 3rd parameter LIBXML_NOCDATA and SimpleXML will consider CDATA nodes as text nodes and will parse them.


$xml = simplexml_load_string($str,'SimpleXMLElement', LIBXML_NOCDATA);

This will output as desired:


SimpleXMLElement Object
(
[childNode] => some text goes here
)

Please note that using the third parameter requires PHP >=5.1 compiled with libxml.

in reference to: Google Sidewiki (view on Google Sidewiki)

Wednesday, November 11, 2009

Find how many number of result of your site on google

<?php
/* return result number */
function get_google_results($domain = 'vijayjoshi.org')
{
// get the result content
$content = file_get_contents('http://www.google.com/search?q=site:'.$domain);

// parse to get results
$result = get_match('/Results <b>(.*)from/isU',$content);

// echo $result;

// split the results
$split1 = explode('of about',$result);

// return result
return $split1[1] ? strip_tags($split1[1]) : 0;
}

/* helper: does the regex */
function get_match($regex,$content)
{
preg_match($regex,$content,$matches);
return $matches[1];
}

/* do it! */
echo 'vijayjoshi.org: '.get_google_results('vijayjoshi.org'); // 164
//echo 'Philogy.com: '.get_google_results('philogy.com'); // 164
?>

How to solve mysql ERROR 1118 (42000) Row size too large

  I had this issue with MYSQL 5.7 . The following worked althoug...