Re: Re: Space in regex

From: Date: Fri, 17 Nov 2006 07:12:05 +0000
Subject: Re: Re: Space in regex
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-244769@lists.php.net to get a copy of this message
On 17/11/06, Paul Novitski <paul@juniperwebcraft.com> wrote:
At 11/16/2006 08:46 PM, Myron Turner wrote: The underscore plus alphanumeric are included in \w, so to get a regex such as you want:
                [\w\s\.\-&\']+
You should escape the dot because the unescaped dot stands for any single character, which is why .* stands for any and all characters. Not actually. Inside a character class, a dot is just a period. You may escape it (or any other character) but you don't need to. To quote the manual: ______________________ Meta-characters ... In a character class the only meta-characters are: \
     general escape character
^
     negate the class, but only if the first character
-
     indicates character range
]
     terminates the character class
... Square brackets ... A closing square bracket on its own is not special. If a closing square bracket is required as a member of the class, it should be the first data character in the class (after an initial circumflex, if present) or escaped with a backslash. ... All non-alphanumeric characters other than \, -, ^ (at the start) and the terminating ] are non-special in character classes, but it does no harm if they are escaped. ______________________ http://ca.php.net/manual/en/reference.pcre.pattern.syntax.php
In any case, none of those solutions work. Try code: <?php $makeLinkPlaceHolder=0; function findLinks ($matches) { global $linkTextArrayPlaceHolder; ++$linkTextArrayPlaceHolder; // Make two peices and fill them with what they should be $matches[0]=str_replace("[", "", $matches[0] ); $matches[0]=str_replace("]", "", $matches[0] ); $parts=explode("|", $matches[0]); print "<br /><br />$parts[0] | $parts[1]"; $returnString="[".$linkTextArrayPlaceHolder."]"; return $returnString; } $text="This is some text. This tag has no spaces and no pipes [TestTag] This tag has no spaces and a pipe [TestTag|AfterPipe] This tag has a space and no pipes [Test Tag] This tag has a space and a pipe [Test Tag|AfterPipe]"; // Clean up the text $text=str_replace("\r\n", "\n", $text); $text=str_replace("\r", "\n", $text); $text=str_replace("\n", "<br />", $text); print $text; // THIS IS THE PROBLEMATIC CODE $text=preg_replace_callback('/\[([A-Za-z0-9\¦\'.-]+)\]/i' , "findLinks", $text); print "<br /><br />".$text; ?> Dotan Cohen http://lyricslist.com/ http://what-is-what.com/

« previous php.general (#244769) next »