NOTE: That was done very quickly and only works on single character searches! I'm working on one that will find multi-character strings. Gimme a few mins and email me off-list if you want it.
Mike "Mike Frazer" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > PHP gave us strpos() and strrpos(), which find the first and last occurrance > of something within a string. What they forgot was rather important: > finding the "n"th occurrance. I wrote some code you can add to your script > (or put it in a separate file and require() it) that provides just such a > function: > > function strnpos($string, $search, $nth) { > $count = 0; > for ($i = 0; $i < strlen($string); $i++) { > if ($string[$i] == $search) { > $count++; > if ($count == $nth) { return $i; } > } > } > if ($count != $nth) { return FALSE; } > } > > Remember, PHP was created in C, and C strings are just arrays of characters. > That functionality partially carries over to PHP (I say partially because > "sizeof($string)" will return 1, not the length of the string). You can > access individual characters just as you would access an individual element > of an array. That's what the above code does. > > The function returns the LOCATION of the nth occurrance, it doesn't do the > replacing for you. You can use it with substr_replace() like so: > > $string = substr_replace($string, "<br>", strnpos($string, " ", 19), 1); > > or in a less compact way: > > $offset = strnpos($string, " ", 19); > $string = substr_replace($string, "<br>", $offset, 1); > > Hope that helps. > > Mike Frazer > > > > "Hugh Danaher" <[EMAIL PROTECTED]> wrote in message > 000801c1a9c5$26007460$0100007f@localhost">news:000801c1a9c5$26007460$0100007f@localhost... > > What I am trying to do is have a line of text break at a "space" after > reading 19 words. Having read the various methods of finding and replacing > one character with another, I settled on preg_replace as my best choice, but > this function doesn't accept a space in the regular expression slot. What > can I do to get around this, or is there a better function than the one I > selected? > > $statement=preg_replace(" ","<br>",$original,19); > > Warning: Empty regular expression in /home/www/host/document.php on line > 71 > > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]