After some interesting projects that required the use of requiring only the chars of any given string i thought i'll just put it up. Simple code.
<?php
function strchrs($str)
{
$n = strlen($str);
$w = "";
for($i = 0; $i < $n; $i ++)
{
if(!is_numeric($str[$i]))
$w .= $str[$i];
}
return $w;
}
?>
Hey I'm building a new DB & Datasource abstraction layer, the framework's been built does anyone wannt help out. I need someone with a SYBASE database, and I'm also working on some new ways of dealing with XML contact me as I don't have much time to complete it. It's actually 3x faster than MDB2, and because it doesn't require PEAR its easier to install. Only OOP developers plz.
strstr
説明
string strstr ( string haystack, string needle )haystackの中でneedleが 最初に現れる場所から文字列の終わりまでを返します。
needle が見つからない場合はFALSEを返しま す。
needle が文字列でない場合は整数に変換され、 その値が検索対象の文字コードとして適用されます。
注意: この関数は大文字小文字を区別することに注意してください。大文字小文 字を区別しない検索を行う場合は、stristr()を使 用してください。
注意: もし特定の haystack に needle があるかどうかを調べるだけの場合、 より早く少ないメモリを使用する strpos() を代わりに使用してください。
strstr() は PHP 4.3.0 以降バイナリセーフになりました。
preg_match()、 stristr()、strpos()、 strrchr() および substr() も参照ください。
strstr
eamon at gizzle dot co dot uk
30-Jan-2007 06:21
30-Jan-2007 06:21
always_sleepz0r at removethisyahoo dot co dot uk
15-Jan-2006 04:38
15-Jan-2006 04:38
//this is my little version
function rdir($d_d, $filter = null) {
$d = dir($d_d);while(false !== ($entry = $d->read())) {
if ($entry!=".." && $entry!="." && $filter==null || true==stristr($entry, $filter)){ if (!is_dir($entry)) {
$ret_arr['f'][]=$entry;}else{$ret_arr['d'][]=$entry;
}}}$d->close();return $ret_arr;}
//usage:
$d="folder";
$dd=rdir($d);
//will return array with all files and folder names
$dd=rdir($d, "requiredneedle");
//will return array with only file/folder names containing "requiredneedle".
//$dd['f'] = files and $dd['d'] = folders
echo "<pre>";print_r($dd);echo "</pre>";
nospam AT thenerdshow.com
16-Nov-2005 09:20
16-Nov-2005 09:20
It is a good practice to ensure dropdown menu submissions contain ONLY expected values:
$i=(isset($_POST['D1']))?$_POST['D1']:$o="Monday";
if (!stristr('Monday Tuesday Wednesday Thursday Friday Saturday Sunday',$i)) die();
(do database query)
This should protect against all known and unknown attacks, injection, etc.
User submitted should be cleaned through other functions. See info under mysql_query
07-Jun-2005 01:13
suggestion for [leo dot nard at free dot fr]:
to be able to cut the string without having the html entities being cut in half, use this instead:
<?php
$oldstr = "För att klippa av en sträng som innehåller skandinaviska (eller Franska, för den delen) tecken, kan man göra såhär...";
$length = 50;
# First, first we want to decode the entities (to get them as usual chars), then cut the string at for example 50 chars, and then encoding the result of that again.
# Or, as I had it done, in one line:
$newstr = htmlentities(substr(html_entity_decode($oldstr), 0, $length));
$newstr2 = substr($oldstr, 0, $length);
# It's not quite as much code as the snippet you've coded to remove the half-portions... ;)
# Hopefully somebody finds this useful!
echo "Without the decode-encode snippet:
$newstr2
With the decode-encode snippet:
$newstr";
?>
The above outputs this:
Without the decode-encode snippet:
För att klippa av en sträng som inneh&ar
With the decode-encode snippet:
För att klippa av en sträng som innehåller skandin
First post in this db ;)
Best regards, Mikael Rnn, FIN
leo dot nard at free dot fr
24-May-2005 06:12
24-May-2005 06:12
When encoding ASCII strings to HTML size-limited strings, sometimes some HTML special chars were cut.
For example, when encoding "" to a string of size 10, you would get: "à&a" => the second character is cut.
This function will remove any unterminated HTML special characters from the string...
function cut_html($string)
{
$a=$string;
while ($a = strstr($a, '&'))
{
echo "'".$a."'\n";
$b=strstr($a, ';');
if (!$b)
{
echo "couper...\n";
$nb=strlen($a);
return substr($string, 0, strlen($string)-$nb);
}
$a=substr($a,1,strlen($a)-1);
}
return $string;
}
rodrigo at fabricadeideias dot com
23-Apr-2005 04:55
23-Apr-2005 04:55
A better solution for nicolas at bougues dot net's problem below is to use
<?
strstr ("0", "0") === FALSE
?>
instead of
<?
strstr ("0", "0") == FALSE
?>
or
<?
is_string (strstr ("0", "0"))
?>
robbie [at] averill [dot] co [dot] nz
19-Mar-2005 10:07
19-Mar-2005 10:07
With regard to the below comment
<?php
$filename = "funnypicture.jpg";
$type = str_replace('.','',strstr($filename, '.'));
echo $type; // jpg
?>
This gets the file extension into the variable $type, not the file type.
To get the file type, use filetype(), or to get the MIME content type, use mime_content_type().
<?php
$filename = "funnypicture.jpg";
$ext = str_replace('.','',strstr($filename, '.'));
$type = filetype($filename);
$mime = mime_content_type($filename);
echo $ext; // jpg
echo $type; // file
echo $mime; // image/jpeg
?>
redzia
09-Feb-2005 12:54
09-Feb-2005 12:54
Example usage of fopen to remove line containing a key string
<?
$key = "w3ty8l";
//load file into $fc array
$fc=file("some.txt");
//open same file and use "w" to clear file
$f=fopen("some.txt","w");
//loop through array using foreach
foreach($fc as $line)
{
if (!strstr($line,$key)) //look for $key in each line
fputs($f,$line); //place $line back in file
}
fclose($f);
?>
steve at alittlefinesse dot com
04-Sep-2004 12:55
04-Sep-2004 12:55
// I needed to find the content between 2 chrs in a string and this was the quickest method I could find.
function SeekVal($str_in) {
$tween=""; // not needed but good practise when appending
$chr1='[';
$chr2=']';
for ($i=strpos($str_in, $chr1);$i<strpos($str_in, $chr2);$i++)
$tween=$tween+$str_in[$i];
return $tween;
}
Ami Hughes (ami at mistress dot name)
23-Apr-2004 01:02
23-Apr-2004 01:02
Because I was working with two different sets of variables and wanted to combine the result into a decimal format, I needed to strip the zero before the decimal. As an added bonus, this will strip anything before a decimal (or period), which might be useful for other things. So, if you are trying to combine apples and oranges like I was, or whatever, try this. =)
<?php
$number = '0.529';
strstr($number,'.');
echo $number; // returns .529
?>
schultz at widescreen dot ch
01-Apr-2004 07:22
01-Apr-2004 07:22
a nice way to decide wether a string starts with a certain prefix, one can use this condition...
$url = 'http://www.widescreen.ch';
$isUrl = ( strstr($url,'http://') == $url );
have fun!
Lars
giunta dot gaetano at sea-aeroportimilano dot it
23-Feb-2004 11:16
23-Feb-2004 11:16
Note to Rolf's post: if the needle is NOT found, the function proposed will truncate the last char of the string!
Romuald Brunet
22-Jan-2004 05:25
22-Jan-2004 05:25
Regarding the note of the manual concerning the speed of strstr against strpos, for people who wants to check a needle occurs within haystack, it apprears that strstr() is in facts faster than strpos().
Example:
<?php
// [VERY] Quick email check:
if ( strstr("email@domain.tld", "@") ) {
// Ok
}
?>
is faster than
<?php
if ( strpos("email@domain.tld", "@") !== FALSE ) {
// Ok
}
Without using the true equality with !==, strpos() is faster. But then if the haystack starts with needle the condition whould not be met.
teezee
14-Mar-2003 08:08
14-Mar-2003 08:08
//Checking and using the above string can be done much easier:
$data="ID: 1, Rolf Winterscheidt, and so on";
$data_array = explode(",",$data);
//will return an array:
$data[0] = ID: 1
$data[1] = Rolf Winterscheidt
$data[2] = and so on
rolf dot winterscheidt at rowitech dot de
07-Mar-2003 09:02
07-Mar-2003 09:02
Get the first part of the string can be so easy:
$data="ID: 1, Rolf Winterscheidt, and so on";
$id=substr($data, 0 , strpos($data, ",")-1);
-> $id is now "ID: 1"
Best regards,
Rolf
crypto at notup2u dot net
02-Mar-2003 10:44
02-Mar-2003 10:44
I've noticed that :
$string = substr($string, 0, strpos($string,$separat));
returns the first par of the string (before $separat) only if there is $separat in the string !
But
$string = substr($string, 0, strlen($string)-strlen (strstr ($string,$separat)));
works anyway ...
That can be useful !
/Crypto
php at silisoftware dot com
15-Feb-2003 08:37
15-Feb-2003 08:37
PHP versions before 4.3.0 (tested on 4.2.2 and 4.2.3) return the $haystack from $needle only up to the first null character. So for example:
$string = strstr("one#two\x00three", "#");
// PHP 4.2.x: $string contains "#two"
// PHP 4.3.0: $string contains "#two\x00three"
If you're trying to match nulls, you will probably get back an empty string:
$string = strstr("one#two\x00three", "\x00");
// PHP 4.2.x: $string contains ""
// PHP 4.3.0: $string contains "\x00three"
joaobett at oninet dot pt
23-Jan-2003 01:07
23-Jan-2003 01:07
[Editor's Note: It's better to:
substr($stringA, 0, strpos($stringA, $toFind)+1)
than to reverse the string twice (slow).]
//If you want to get the text before the occurence of the character
//you want to find, simply use the function strRev twice:
$stringA = "user@example.com"; $toFind = "@";
echo strrev( strchr(strrev($stringA),$toFind) );
//output: user@
mario at comicide dot com
30-Dec-2002 03:58
30-Dec-2002 03:58
If you would like to count files on a directory, this might be helpful. In this case I wanted to create a random image generator, but not have to keep track of the image count. Example: I have 4 images, and choose a random number between 1-4. If I decide to add a 5th and 6th image, I would have to generate at random 1-6. STRSTR can help you keep track of the amount of images, without you having to update the code.
NOTE, this example is based on the naming convention
image1.gif
image2.gif
image3.gif
""""""""4"""
etc....
If you are not using it, then just make the adjustments.
------------------------------------------------------
//First a function. $path is where you want to count files
//$filter is the criteria. Ex. File names with "image" in it.
function countfiles($path, $filter)
{
$dir = opendir($path);
while ($file = readdir($dir)){
if(strstr($file, $filter)){ $i++; }
}//end while
closedir($dir);
return $i;
}
//-------------------------------------------------
$max = countfiles("/you directory", "image");
$num = rand(1,$max);
$image = "image";
$image.= $num;
$image.= ".gif"; // or jpg, png, etc
echo "<img scr=\"$image\">";
nin at screamingslaves dot com
29-Dec-2002 05:54
29-Dec-2002 05:54
Since I managed to do this in a few seconds, why not let it out to someone in the same need ...
Based on the above idea, since I had:
$string = "Some text (some note) some other text";
And say you just wanted whats *between* the parentheses (or between basically anything):
<?
function remover($string, $sep1, $sep2)
{
$string = substr($string, 0, strpos($string,$sep2));
$string = substr(strstr($string, $sep1), 1);
return $string;
}
$string = "Some text (some note) some other text";
$str1 = "(";
$str2 = ")";
echo remover($string, $str1, $str2);
?>