Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用更高版本的PHP时代码中断_Php_Forms_Character Encoding - Fatal编程技术网

使用更高版本的PHP时代码中断

使用更高版本的PHP时代码中断,php,forms,character-encoding,Php,Forms,Character Encoding,当我从PHP v5.2.17-->v5.3.5升级时,出现了以下代码,但我不知道它是什么。有人知道什么地方可能出了问题吗?谢谢 <?php setlocale(LC_ALL, 'en_US.UTF8'); $goto = $_POST['location']; function toAscii($str, $replace=array(), $delimiter='-') { if( !empty($replace) ) { $str = str_replac

当我从PHP v5.2.17-->v5.3.5升级时,出现了以下代码,但我不知道它是什么。有人知道什么地方可能出了问题吗?谢谢

<?php

setlocale(LC_ALL, 'en_US.UTF8');

$goto = $_POST['location'];

function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }
    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
    return $clean;
}
?>


没有任何类型的错误,我查看了我的cms日志,没有任何异常。我设置了一个简单的测试,下面是发生的情况:

<?php
$goto = $_POST['location']; 
function toAscii($str, $replace=array(), $delimiter='-') { 
  if( !empty($replace) ) { 
    $str = str_replace((array) $replace, ' ', $str); 
  } 
  $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean); 
  $clean = strtolower(trim($clean, '-')); 
  $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean); 
  return $clean; 
}
?> 

输出为:
输出为:


当我输出原始表单数据时,它工作得很好,当我输出
toAscii($goto)
数据时,它不会返回任何内容。

您没有在问题中添加错误消息,但由于代码只使用一个非标准函数,即
iconv
,很可能您没有安装/启用

要解决这个问题,请启用所需的扩展,代码应该按照您从其他PHP配置中了解的那样工作

如果扩展是可用的,并且是从我的头顶启用的(PHP5.3应该是这种情况),那么你应该在你的问题中添加更多的信息,到底是什么在破坏。什么东西没有按预期工作


要进行故障排除,请在代码上方放置:

error_reporting(-1);
ini_set('display_errors', 1);
这将确保错误和警告直接可见


为了继续排除故障,让我们在例行程序中注意不正常的工作。示例性我已经添加了一个对
iconv
返回值的检查,同样的检查可以应用于任何类型的变量(测试变量是否包含预期的内容)或函数返回值:

function toAscii($str, $replace=array(), $delimiter='-') { 
  if( !empty($replace) ) { 
    # NOTE: no need to cast to array. It's either array or string, both work
    $str = str_replace($replace, ' ', $str);
  }
  # NOTE: inconv will return FALSE on error. Checking this now.
  $result = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  if (FALSE === $result) {
    throw new Exception(sprintf('Iconv failed on "%s".', $str));
  } else {
    $clean = $result;
  }

  $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
  $clean = strtolower(trim($clean, '-')); 
  $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean); 
  return $clean; 
}

您收到了什么错误消息?您收到了有用的错误消息吗?另外,有趣的是,我在自己的PHP5.3应用程序中使用了这段代码。它很好用。也许你没有安装iconv扩展?嘿,不幸的是我没有收到任何错误。我在一个“跳转”页面上使用这段代码,该页面处理一个简单的表单,清理表单输入,使其对url友好,并将输出添加到它重定向到的另一个url。因此,应该发生什么,我将在第1页的表单中输入文本并提交表单,在第2页,上面的php代码将处理表单,去掉不好的字符,将结果放入url字符串中,将我重定向到第3页。不幸的是,我有相当轻量级的php技能,我不知道如何安装iconv扩展来尝试你的建议。我使用的是MAMP服务器(基本上是Mac上的LAMP)。我该如何添加这个扩展名呢?首先检查它是否已经可用:创建一个带有代码
的.php文件,您会遇到什么样的错误?只有一个白色的页面,一点错误都没有?hakre-没有错误,只需跳回到提交表单的第一页。这可能是我的CMS的一个功能。听起来你已经安装了iconv。你能检查一下你的PHP错误日志吗?或者您的CMS使用的任何日志?