Hi Gwynne, ----- Original Message ----- From: "Gwynne" Sent: Sunday, July 23, 2006
> On Jul 23, 2006, at 5:38 AM, Matt W wrote: > >> While we're on the subject, one of my favorite personal patches to > >> PHP is one that adds the %n specifier. The parameter to %n is a > >> reference which recieves the total length of the string with all > >> replacements so far. %n itself is replaced by nothing at all. You > >> could do this with $n = strlen( $s = sprintf( blah blah blah ) ) + > >> strlen( $s .= sprintf( the rest of the blah ) );, but it's a very > >> nice shortcut if you need the replaced length in the middle of the > >> conversion or for a situation like this (and the above doesn't work > >> too well if you have positional params!): > >> > >> printf( "Some processing message with %s replacements...%n", > >> 'some', & > >> $n ); > >> // do some stuff here > >> print str_repeat( ' ', $n ) . "\rSome status text here that doesn't > >> worry about whether the replaced text was longer."; > >> > >> Here's the printf(3) manpage description for %n (MacOS X system, BSD > >> manpage): > >> > >> n The number of characters written so far is stored into > >> the inte- > >> ger indicated by the int * (or variant) pointer > >> argument. No > >> argument is converted. > >> > >> Any chance of getting this into PHP? I can provide a patch. > > I had thought about adding %n too, but didn't know what the > > reaction would > > be or if it'd be used. (And the length thing would have to be changed > > [later] for Unicode length or such, I assume?) Also, wasn't sure > > about the > > internals code for the reference and writing to it, etc. :-) > > I'm completely unversed in the current Unicode stuff; I can only > provide a patch against 5.2. Someone who knows the Unicode crud would > have to update it for HEAD, and given the recent loud argument about > HEAD vs branch commits, I don't know how well a 5.2-only patch would > go over. Any advice on that point? The formatted_print.c code is currently the same for both versions, so I'd submit the patch for both. Not to dump the work on someone else then, but I'm pretty sure the existing code will need updating for Unicode, and I think updating the %n length stuff would be a fairly simple thing overall. :-) Matt -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php