我认为将是一种简单的实现的代码和一个功能两行,原来进行失败。

在我的网页,我希望能够输入[text]1[/text]的,它所要做的是拉动该ID的标题。

function textFormat($text) {
    $raw = array(
        '\'\[text\](?P<id>.*?)\[/text\]\'is'
    );

    $out = array (
        '<a href="index.php?function=getData&reference=text&id=$1">' . getTextTitle() . '</a>'
    );

    preg_replace($raw, $out, $text);
    return $text;
}

function getTextTitle($id) {
     $sql = mysql_query("SELECT title FROM text WHERE id = $id");
     return mysql_result($sql);
}

所以,这里的可爱的小问题:由于一看就知道,我打电话与数字的同名变量,它在引号的伟大工程的功能,但我们知道,PHP不喜欢这样。所以,我选择了一组命名。使用$regs['id']无法工作。

我是不是做错了什么?

我要对这个错误的方式?

有帮助吗?

解决方案

好了,你肯定做的比我会一个完全不同的方式,但我认为有些事情不是太离谱,从你尝试可能的工作是什么。尝试这样:

function textFormat($text) {
    $raw = array(
        '\'\[text\](?P<id>.*?)\[/text\]\'ise'
    );
    $out = array (
        '\'<a href="index.php?function=getData&reference=text&id=$1">\' . getTextTitle(\'$1\') . \'</a>\''
    );
    preg_replace($raw, $out, $text);
    return $text;
}

function getTextTitle($id) {
     $sql = mysql_query("SELECT title FROM text WHERE id = '" . mysql_real_escape_string($id) . "'");
     $res = mysql_result($sql);
     $row = mysql_fetch_array($res);
     return $row ? $row[0] : 'invalid ID';
}

您原来getTextTitle()会,除非别的东西是怎么回事,我不知道,让任何人做任何事情,他们喜欢通过SQL注入数据库,顺便说一句。不客气。

另外,我不知道(?P<id>噪声约为在正则表达式是什么,所以我假设它的需要出于某种原因,并独自离开它。我不知道这是否是正确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top