Re: looping through text with array_key_exists function
- From: "drako" <neil@xxxxxxxxxxxxxx>
- Date: 29 Jun 2006 12:55:47 -0700
Thanks.
I think I must have left my brain on the train today, but what I came
up with earlier was:
function convert_text_to_images($text) {
$split = preg_split('//', strtolower($text), -1, PREG_SPLIT_NO_EMPTY);
print_r($split);
$imgsrc_string="";
$regex = '/[a-z0-9]/i';
for($a = 0; $a <= (count($split)-1); $a++){
if(preg_match($regex, $split[$a])) {$temp =
preg_replace('/([a-z0-9])/', '<img src="$1.jpg" alt="$1">',
$split[$a]); $imgsrc_
string .= $temp;}
elseif ($split[$a]== ' ') {$imgsrc_string .= '<img src="space.jpg"
alt=" ">';}
elseif ($split[$a]== '!') {$imgsrc_string .= '<img
src="exclamation.jpg" alt=" ">';}
else {$imgsrc_string .= $string[$a];}
}
return($imgsrc_string);
}
This gives me one large string that I can easily insert into a webpage.
I'm sure if combine elements of what you suggest, I'll soon crack this.
Thanks for your help.
Neil.
Janwillem Borleffs wrote:
drako wrote:
I thought using "preg_match" would work - i.e.
if(preg_match('/([a-z0-9])/', $text)) {preg_replace('/([a-z0-9])/',
'<img src="$1.jpg" />', $text); }
This is superfluous use of preg_* functions, as you can use preg_replace
without the preg_match.
Tricky thing, however, is that img tags contain spaces and you only want to
replace spaces outside the tags.
The following solution offers a workaround for this problem:
$text = 'hello world!';
// replace special cases
$special = array(
' ' => 'space.jpg',
'!' => 'exclamation.jpg',
'_' => 'underscore.jpg'
);
// generate a string from the special characters
$specialchars = preg_quote(implode('', array_keys($special)), '/');
// start replacing; the special characters will generate invalid image
markers (like "_.jpg"),
// which will be replaced during the the second run of preg_replace
$text = preg_replace('/([a-z0-9' . $specialchars . '])/', '<img src="$1.jpg"
/>', $text);
// replace special characters in the img src attributes
$text = preg_replace('/([' . $specialchars . ']).jpg/e', '$special[\'$1\']',
$text);
This way, you will only have to maintain the $special array and leave the
other code as is.
There are other ways of doing this, but the above should give you a push in
the right direction.
JW
.
- Follow-Ups:
- References:
- looping through text with array_key_exists function
- From: drako
- Re: looping through text with array_key_exists function
- From: drako
- Re: looping through text with array_key_exists function
- From: Janwillem Borleffs
- Re: looping through text with array_key_exists function
- From: drako
- Re: looping through text with array_key_exists function
- From: drako
- Re: looping through text with array_key_exists function
- From: Janwillem Borleffs
- looping through text with array_key_exists function
- Prev by Date: Connect to mysql?
- Next by Date: Re: looping through text with array_key_exists function
- Previous by thread: Re: looping through text with array_key_exists function
- Next by thread: Re: looping through text with array_key_exists function
- Index(es):
Relevant Pages
|