Bug #52198 [Bgs]: strpos not working correctly
| From: | rasmus@php.net | Date: | Mon, 28 Jun 2010 19:19:19 +0000 |
| Subject: | Bug #52198 [Bgs]: strpos not working correctly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-151947@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52198&edit=1
ID: 52198
Updated by: rasmus@php.net
Reported by: christian dot gnoth at arcor dot de
Summary: strpos not working correctly
Status: Bogus
Type: Bug
Package: Strings related
Operating System: Linux
PHP Version: 5.2.13
New Comment:
That function is not a standalone test case. It references global
variables and
calls other functions like get_option, j2wp_extract_number,
j2wp_get_post_url_for_id and a bunch of others. Why in the world can't
you make a
simplified standalone case that hardcodes some of these to whatever you
have them
set to and makes it very clear what you are passing to this function?
Until you do that, you will get no help from here. I assure you that
this is not
a PHP bug.
Previous Comments:
------------------------------------------------------------------------
[2010-06-28 21:12:19] christian dot gnoth at arcor dot de
as I wrote I offered you the complete source as zip file and the mysql
dump.
then the whole php function is printed in this report.
I changed the script and simplyfied the else tree:
function j2wp_change_single_url( $j2wp_post, $lnk_pos )
{
global $CON,
$wpdb;
$j2wp_wp_tb_prefix = get_option('j2wp_wp_tb_prefix');
$j2wp_joomla_tb_prefix = get_option('j2wp_joomla_tb_prefix');
$permalink = false;
// $lnk_pos ---> pos at href=" string in post_content
// $post_lnk_end ---> pos at last " in link string of
post_content
// $post_lnk_string ---> contains the whole link string inkl. " at
the end
$post_lnk_end = strpos( $j2wp_post['post_content'], '"',
$lnk_pos + 7);
$post_lnk_string = substr( $j2wp_post['post_content'], $lnk_pos,
$post_lnk_end - $lnk_pos + 1 );
if ( !(strrpos( $post_lnk_string, '/') === false) )
$pos_lnk_last_slash = strrpos( $post_lnk_string, '/');
$strpos_ret = strpos( $post_lnk_string, 'article&id=');
echo 'Post ID: ' . $j2wp_post['ID'] . ' link: ' . $post_lnk_string .
'
:' . $strpos_ret . ':<br />';
$strpos_ret = strpos(
'href="index.php?option=com_content&view=article&id=9257:2009-fha-loan-limits&catid=52:fha&Itemid=97"',
'article&id=');
echo 'Post ID: ' . $j2wp_post['ID'] . ' link: ' .
'href="index.php?option=com_content&view=article&id=9257:2009-fha-loan-limits&catid=52:fha&Itemid=97"'
. ' :' . $strpos_ret . ':<br />';
// urls with structure:
href="index.php?option=com_content&view=article&id=9257:2009-fha-loan-limits&catid=52:fha&Itemid=97"
// if ( $pos_article_id = strpos( $post_lnk_string, 'article&id=') )
if ( !(strpos( $post_lnk_string, 'article&id=') === false) )
{
$pos_article_id += 11;
$article_id = j2wp_extract_number( substr( $post_lnk_string,
$pos_srticle_id ) );
$url_post_id = j2wp_get_post_url_for_id( $article_id );
$permalink = get_permalink( $url_post_id );
}
else
{
echo 'Post ID: ' . $j2wp_post['ID'] . ' link: ' . $post_lnk_string .
'<br />';
but still the output is the same. It still goes in the else tree.
please take the time to look ofver the source which is provided here -
it already shows the complete php function.
------------------------------------------------------------------------
[2010-06-28 19:59:03] rasmus@php.net
Sorry, but you have PHP configured to parse files in that directory, so
nobody
can download your source code. Try it for yourself.
And what simplifying your problem will do is show you that it isn't a
strpos
issue. Start with your complex example that isn't doing what you
expect.
Simplify it a little bit and see if it is still "broken". Keep doing
that until
it starts working and you will have found your bug.
So far you have done nothing but waste our time. You refuse to provide
a simple
reproducing script and you also have not provided a way to get your
complicated
reproducing script.
------------------------------------------------------------------------
[2010-06-28 19:52:40] christian dot gnoth at arcor dot de
what will be enlightening to me if I know that the strpos function is
working in a simple script and with a static string passed, but not in
big script with different function calls?
What I have if I proove the strpos is working, but in the that case
not?
I provided the source code here. In the directory you will find the .php
files which you can download - I see in the browser a direcotry list.
f you want I can provide a MySQL dump and the php scripts as .zip file.
But the source code is above of the whole function.
------------------------------------------------------------------------
[2010-06-28 19:21:29] rasmus@php.net
By the way, even if I was inclined to look through your code, you
haven't provided
it. The http://joomla-wp.it-gnoth.de/wp-content/plugins/joomla2wp/
link
is
useless since it doesn't serve up a visible version of the scripts
there.
------------------------------------------------------------------------
[2010-06-28 19:13:54] rasmus@php.net
No, you need to take the time to simplify your case into a standalone
test that
proves your point instead of asking us to weed through a lot of code.
There is
absolutely nothing wrong with the strpos function, so the exercise of
producing a
standalone test will be enlightening for you. You can choose not to
believe me, I
suppose, that is entirely up to you.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/bug.php?id=52198
--
Edit this bug report at http://bugs.php.net/bug.php?id=52198&edit=1