Re: pcre little problem
| From: | tamouse mailing lists | Date: | Tue, 08 Nov 2011 10:46:16 +0000 |
| Subject: | Re: pcre little problem | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-315610@lists.php.net to get a copy of this message | ||
On Mon, Nov 7, 2011 at 5:54 AM, Richard Quadling <rquadling@gmail.com> wrote:
> On 4 November 2011 16:52, QI.VOLMAR QI <qi.volmar@gmail.com> wrote:
>
>> i have this part of code that works with DOMDocument:
>>
>> public function translateNFeXML(NFE $nfe_factory) {
>> $inf_adic = $nfe_factory->createElement('infAdic');
>> if ($this->inf_ad_fisco) {
>> $inf_adic_fisco =
>> $nfe_factory->createElement('infAdicFisco', $this->inf_ad_fisco);
>> $inf_adic->appendChild($inf_adic_fisco);
>> }
>>
>> $string = "a=10&b[]=20&c=30n°&d=40+:50";
>> die(preg_filter('/[^:][[:punct:]]/', '', $string));
>> $inf_cpl = $nfe_factory->createElement('infCpl',
>> $this->inf_complementar);
>>
>> QUESTION: Why the preg_filter causes a end of the application, with no
>> error throwing (even in die don't appears nothing)?
>
>
> preg_filter() returns NULL if there are no matches and the subject is a
> string.
>
> And ...
>
> php -r "die(null);"
>
> outputs nothing.
Here:
>> die(preg_filter('/[^:][[:punct:]]/', '', $string));
Did you really want to do this:
preg_filter('/[^:][[:punct:]]/', '', $string) or die("nothing
returned\n");
???
See http://php.net/manual/en/function.preg-filter.php
"Return values"
as Richard points out preg_filter returns NULL if there are no matched
in a string.
Now this is interesting:
>> $string = "a=10&b[]=20&c=30n°&d=40+:50";
There is a wide character in that string following 30n. The preg
functions sometimes don't deal well with wide characters in my
experience (it's not 100% anyway), you probably need to use the mb_
functions instead.