-1

我正在尝试POST一个 SOAP 请求。它看起来像一个重复的问题。这个问题有多种解决方案,但没有一个对我有用。所以我尝试了以下方法:

在 SO 中找到preg_match() compilation failure最佳答案,但它给了我。我试图用这个答案解决这个问题,但我仍然遇到同样的错误。

然后我尝试了 SO 对这个问题的最后一个答案,但没有运气。

核心/Input.php

function _clean_input_keys($str)
    {
        if ( ! preg_match("/[^a-zA-Z0-9_\-.]+$/i", $str))
        {
            exit('Disallowed Key Characters.'.$str);
        }

我不擅长正则表达式,无法弄清楚问题出在哪里?


当滚动条存在时,Highcharts 图形宽度不正确,在引导流体跨度中

我不确定这是引导程序还是 highcharts 问题,但我似乎无法正确调整图表大小;当滚动条存在且在引导跨度中时,初始图表宽度太宽。调整窗口大小似乎永远不会产生太宽的宽度,但有时它们会太窄。

从 span 构造中删除代码似乎在所有情况下都会产生适当的宽度,所以我认为 hc 和 bootstrap 之间可能存在一些有害的交互。

我做了一个小提琴来演示,但请记住,您的浏览器窗口需要足够短才能产生滚动条:

http://jsfiddle.net/xEtherealx/Q5EGX/15/

有没有办法可以通过css强制宽度符合?我可以在调整窗口大小时创建一个回调作为一种解决方法,但我宁愿找到一个合适的解决方案。

编辑:正如所建议的,以下是一种解决方法,可以在超时后调用,也可以在页面加载后调用一次:

    this.setChartSize = function() {
        chart.setSize( $(chart.container).parent().width(), $(chart.container).parent().height() );
        return false;
    };

HTML:

<div id="content" class="container-fluid">
    <div class="row-fluid">
        <div id="toresize" class="span3" style="background: gray; overflow: auto;">
            <div class="targetpane">
                 <h4 class="text-center">HC Sizing Test</h4>

                <!-- take up space -->
                <div class="well well-small" style="height: 160px;"></div>

                <!-- Chart -->
                <div class="well well-small" style="padding: 5px;">
                    <div id="barchart" style="height: 160px; margin-bottom: 5px;"></div>
                </div>

                <!-- take up space -->
                <div class="well well-small" style="height: 160px;"></div>
            </div>
        </div>

        <!-- span -->
        <div class="span9" style="background: gray;">
            <div class="myBorder">Some content</div>
        </div>
    </div>
</div>
<script src="http://code.highcharts.com/highcharts.js"></script>

CSS:

@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');
.well
{
    background-color: #444;
}

.targetpane
{
    color: #888;
    background-color: #1B1B1B;
    border: 1px solid #888;
    border-radius: 3px;
    padding: 0px 5px 0px 5px;
}

.bodycontainer {
    height: 50px !important;
    white-space: nowrap;
    overflow-x: hidden;
}

JS:

var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'barchart',
        borderWidth: 1
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});

$(window).resize(function () {
    $('#toresize').height($(window).height() - 3);
    console.log($(window).height());
})
$(window).resize();
4

1 回答 1

1

你能先告诉你你想做什么吗?你是通过post发送xml吗?这个错误是怎么发生的?

同样在您找到的解决方案中(这可能是原因)您在应用程序中使用的正则表达式是什么?

您在 asnwer 中注意到这一点了吗?preg_macth 编译错误表示未转义的正则表达式

请注意,缺少的字符是 .(dot),您应该始终在正则表达式中转义 .(dot),否则它们将允许任何单个字符。

编辑:

if ( !preg_match("/^[a-z0-9:_\/-\<\?]+$/i", $str)) //or alternatively match all chars "/^[\.-a-z0-9:_\/-]+$/i"
    {
        exit('Disallowed Key Characters.'.$str);
    }

不是添加的 < 和 ?,您必须添加所有触发此条件的章程。这些租船人没有添加的原因是为了防止注入。所以明智地使用它。google xml preg_match expression以确保它是一个 xml 文件,如果需要,请创建另一个输入检查。因为 xml 可能包含所有不允许的字符,所以您最好删除该条件并返回 true;

Edit2:如果您可以代替发布,请尝试通过链接或上传文件解析 XML。

于 2013-05-30T14:52:56.407 回答