这是一个很奇怪的现象:我用ckeditor发布新闻,里面添加了图片,在网站中我需要提取出图片路径,并在首页显示。我用的方法是在提交过程中截流,用正则表达式提取图片路径。我的正则表达式如下:
"/<img alt=\"\w+|\" src=\"([^^]*?)\".*/i"我在本地的环境:win7下 apache+mysql+php;(wamp集成环境)。
上传上去的环境:win2003下 iis+mysql+php;问题所在就是:在本地提取图片路径时没有任何问题,但是把网站上传上去后提取就不行了!!为了找到原因,我细细排查了各种问题:
1、发布文章时,在ckeditor编辑框中以源码方式查看,结果是:
“<p>
请在这里添加文章内容!</p>
<p>
<img alt="" src="/xsh/uploadfiles/images/2010-10-19.jpg" style="width: 400px; height: 300px" /></p>”

提交文章时,在网页中输出提交内容(echo $_POST['content'];),查看源码,输出的结果是:
<p>
请在这里添加文章内容!</p>
<p>
<img alt=\"\" src=\"/xsh/uploadfiles/images/2010-10-19.jpg\" style=\"width: 400px; height: 300px;\" /></p>

比较发现比提交前在"前多了\。2、在浏览器中查看刚才添加的文章,图片却能正确显示,查看数据库中存储,结果是:
“<p>
请在这里添加文章内容!</p>
<p>
<img alt="" src="/xsh/uploadfiles/images/2010-10-19.jpg" style="width: 400px; height: 300px" /></p>”

结果又和起初ckeditor编辑框中内容相同。上面两点分析就让我搞不明白了,从开始内容正确,到提交多了“/”,到写入数据库又恢复正常,这到底是什么情况啊????
还有强调一点,网站在我本地时以上两个分析输出内容都没有任何变化,全是正确的!!
望高手指教!小弟初来论坛,分不多,以后赚到分了一定奉送!

解决方案 »

  1.   

    这是因为使用了字符串转义的机制例如 : "\"",双引号字符(")就可以在""双引号的范围中使用一般使用转义的话,就是害怕你在使用这个内容的话,有和其他的双引号作处理,一般多反生在数据库sql拼接中,例如$a = '我有一个双引号"';$sql = 'SELECT * FROM test WHERE title link "%'.$a.'%"'; // 仅仅是做演示,大部分都是用'如果你不进行转义的话,mysql执行的话,一定报错
      

  2.   

    我的是图片的路径在数据库中显示时<img src=""  中的\都消失掉了  不知道怎么回事  请高手指教
      

  3.   

    我解决问题了,就是修改正则表达式,估计是windows server2003本身的问题
    终极解决方案就是顺应他们,把正则表达式改成有'\'的