http://yanue.net/post-107.html

有时我们需要判断是不是ajax请求来决定模块输出还是json格式输出.
PHP判断ajax请求的原理:
在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断。


/**
  * 当前请求是否ajax请求
  *
  * @access public
  * @return bool
  */
 function isAjax()
 {
     return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'XMLHttpRequest';
 }
注意:
一般情况下$_SERVER['HTTP_X_REQUESTED_WITH']默认是XMLHttpRequest
$_SERVER['HTTP_X_REQUESTED_WITH']也可以自定义创建的,使用XMLHttpRequest.setRequestHeader(name,value);参考文章:http://www.skygq.com/2011/01/04/php-check-request-from-ajax-or-normal/
PHP判断AJAX请求时跨域问题:
如果是跨域的话这个,上面的isAjax就完全不正确了。跨域同域的问题参考:《$.getjson遇到的几个问题》使用$.getJSON来实现跨域,但是检测是否是ajax一直是false,并尝试$get(参看:$.get实现返回解析json数据以及jsonp跨域)之后无果的之后,考虑要使用万能的$ajax方法,见ajax的文档:


如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是 XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如 beforeSend。


解释:
ajax跨域只能指定jsonp格式的数据,这个是就不是XMLHttpRequest对象了,就算你自定义一个$_SERVER['HTTP_X_REQUESTED_WITH']也是没有意义的


解决的办法:
针对跨域情况的getjson 或者ajax(jsonp)可以使用ACCEPT请求头部格式来判断


PHP端对应$_SERVER['HTTP_ACCEPT']


jsonp的请求一般是:text/javascript, application/javascript, */*


json的请求:application/json, text/javascript, */*


一个简单的判断跨域条件下的ajax请求:


switch ($_SERVER['HTTP_ACCEPT']){  
    case 'application/json, text/javascript, */*':  
        //  JSON 格式  
        break;  
    case 'text/javascript, application/javascript, */*':  
        // javascript 或 JSONP 格式  
        break;  
    case 'text/html, */*':  
        //  HTML 格式  
        break;  
    case 'application/xml, text/xml, */*':  
        //  XML 格式  
        break;  
}
转载请注明:半叶寒羽 » PHP判断ajax请求:HTTP_X_REQUESTED_WITH
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
正则匹配所有图片地址src的方法可以使用以下几种方式: 1. 使用JavaScript的正则表达式进行匹配。可以使用以下代码: ```javascript var str = "this is test string <img src=\"http:yanue.net/test.jpg\" width='50' > 123 and the end <img src=\"所有地址也能匹配.jpg\" /> 33! <img src=\"/uploads/attached/image/20120426/20120426225658_92565.png\" alt=\"\" />"; var imgReg = /<img.*?(?:>|\/>)/gi; var srcReg = /src=\[\'\"\]?(\[^\'\"\]*)\[\'\"\]?/i; var arr = str.match(imgReg); var imgSrcArr = \[\]; for (var i = 0; i < arr.length; i++) { var src = arr\[i\].match(srcReg); if (src && src\[1\]) { imgSrcArr.push(src\[1\]); } } console.log(imgSrcArr); ``` 这段代码会将字符串中所有的图片地址(src属性)提取出来并存储在imgSrcArr数组中。 2. 使用JavaScript的正则表达式进行匹配。可以使用以下代码: ```javascript let matchReg = /<img.*?(?:>|\/>)/gi; let srcReg = /src=\[\'\"\]?(\[^\'\"\]*)\[\'\"\]?/i; let str = this.form.content; let arr2 = str.match(matchReg); let imgSrcArr = \[\]; if (arr2 != null) { for (let i = 0; i < arr2.length; i++) { let src = arr2\[i\].match(srcReg); if (src && src\[1\]) { imgSrcArr.push(src\[1\]); } } } console.log(imgSrcArr); ``` 这段代码会将字符串中所有的图片地址(src属性)提取出来并存储在imgSrcArr数组中。 3. 使用PHP的正则表达式进行匹配。可以使用以下代码: ```php $str = '<img src="/zentao/file-read-92254.jpg" alt="" />'; $pattern_imgTag = '/<img\b.*?(?:\>|\/>)/i'; $pattern_src = '/\bsrc\b\s*=\s*\[\'\"\]?(\[^\'\"\]*)\[\'\"\]?/i'; preg_match_all($pattern_imgTag, $str, $matchIMG); $imgSrcArr = \[\]; if (isset($matchIMG\[0\])) { foreach ($matchIMG\[0\] as $key => $imgTag) { preg_match_all($pattern_src, $imgTag, $matchSrc); if (isset($matchSrc\[1\])) { foreach ($matchSrc\[1\] as $src) { $imgSrcArr\[\] = $src; } } } } var_dump($imgSrcArr); ``` 这段代码会将字符串中所有的图片地址(src属性)提取出来并存储在$imgSrcArr数组中。 以上是三种常用的正则匹配图片地址(src属性)的方法,你可以根据自己的需求选择其中一种来使用。 #### 引用[.reference_title] - *1* [JavaScript正则匹配出所有图片及所有图片地址src](https://blog.csdn.net/qq_43434300/article/details/102676481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [js正则表达式匹配到所有img图片和src](https://blog.csdn.net/qq_43777572/article/details/127406840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [正则匹配img中的src/a标签href](https://blog.csdn.net/phpstory/article/details/126409163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值